Buggy python submission (verdict: Runtime Error):
def find_next(room, move):
    for next in path[room]:
        if mark[next] != None:
            if mark[next][1] < move:
                continue
            else:
                mark[next] = (room, move)
                find_next(next, move + 1)
        else:
            mark[next] = (room, move)
            find_next(next, move + 1)

N, M = map(int, input().split())
path = [[] for _ in range(N)]
for i in range(M):
    A_i, B_i = map(int, input().split())
    path[A_i - 1].append(B_i - 1)
    path[B_i - 1].append(A_i - 1)
# print(path)
mark = [None] * N
mark[0] = (0, 0)
find_next(0, 1)
print("Yes")
for i in range(1, len(mark)):
    print(mark[i][0] + 1)

Fixed submission:
from collections import deque
n, m = map(int,input().split())
AB = [tuple(map(int, input().split())) for _ in range(m)]

def bfs(start):
    queue = deque()
    visited = [False] * n
    visited[start-1] = True
    queue.append(start)
    while queue:
        target = queue.popleft()
        for i in g[target]:
            if not visited[i-1]:
                ans[i-2] = target
                visited[i-1] = True
                queue.append(i)

ans = [0] * (n-1)
g = dict()
for a, b in AB:
    if a in g:
        g[a].append(b)
    if b in g:
        g[b].append(a)
    if a not in g:
        g[a] = [b]
    if b not in g:
        g[b] = [a]
start = 1
bfs(start)
if len([i for i in ans if i == 0]) == 0:
    print("Yes")
    print(*ans, sep="\n")
else:
    print("No")

Buggy python submission (verdict: Runtime Error):
def find_next(room, move):
    for next in path[room]:
        if mark[next] != None:
            if mark[next][1] < move:
                continue
            else:
                mark[next] = (room, move)
                # find_next(next, move + 1)
        else:
            mark[next] = (room, move)
            find_next(next, move + 1)

N, M = map(int, input().split())
path = [[] for _ in range(N)]
for i in range(M):
    A_i, B_i = map(int, input().split())
    path[A_i - 1].append(B_i - 1)
    path[B_i - 1].append(A_i - 1)
# print(path)
mark = [None] * N
mark[0] = (0, 0)
find_next(0, 1)
if None in mark:
    print("No")
else:
    print("Yes")
    for i in range(1, len(mark)):
        print(mark[i][0] + 1)

Fixed submission:
from collections import deque
n, m = map(int,input().split())
AB = [tuple(map(int, input().split())) for _ in range(m)]

def bfs(start):
    queue = deque()
    visited = [False] * n
    visited[start-1] = True
    queue.append(start)
    while queue:
        target = queue.popleft()
        for i in g[target]:
            if not visited[i-1]:
                ans[i-2] = target
                visited[i-1] = True
                queue.append(i)

ans = [0] * (n-1)
g = dict()
for a, b in AB:
    if a in g:
        g[a].append(b)
    if b in g:
        g[b].append(a)
    if a not in g:
        g[a] = [b]
    if b not in g:
        g[b] = [a]
start = 1
bfs(start)
if len([i for i in ans if i == 0]) == 0:
    print("Yes")
    print(*ans, sep="\n")
else:
    print("No")

Buggy python submission (verdict: Runtime Error):
def find_next(room, move):
    for next in path[room]:
        if mark[next] != None:
            if mark[next][1] < move:
                continue
            else:
                mark[next] = (room, move)
                find_next(next, move + 1)
        else:
            mark[next] = (room, move)
            find_next(next, move + 1)

N, M = map(int, input().split())
path = [[] for _ in range(N)]
for i in range(M):
    A_i, B_i = map(int, input().split())
    path[A_i - 1].append(B_i - 1)
    path[B_i - 1].append(A_i - 1)
mark = [None] * N
mark[0] = (0, 0)
find_next(0, 1)
if None in mark:
    print("No")
else:
    print("Yes")
    for i in range(1, len(mark)):
        print(mark[i][0] + 1)

Fixed submission:
from collections import deque
n, m = map(int,input().split())
AB = [tuple(map(int, input().split())) for _ in range(m)]

def bfs(start):
    queue = deque()
    visited = [False] * n
    visited[start-1] = True
    queue.append(start)
    while queue:
        target = queue.popleft()
        for i in g[target]:
            if not visited[i-1]:
                ans[i-2] = target
                visited[i-1] = True
                queue.append(i)

ans = [0] * (n-1)
g = dict()
for a, b in AB:
    if a in g:
        g[a].append(b)
    if b in g:
        g[b].append(a)
    if a not in g:
        g[a] = [b]
    if b not in g:
        g[b] = [a]
start = 1
bfs(start)
if len([i for i in ans if i == 0]) == 0:
    print("Yes")
    print(*ans, sep="\n")
else:
    print("No")

Buggy python submission (verdict: Runtime Error):
def find_next(room: int, move: int) -> None:
    for next in path[room]:
        if mark[next] != None:
            if mark[next][1] <= move:
                continue
            else:
                mark[next] = (room, move)
                find_next(next, move + 1)
        else:
            mark[next] = (room, move)
            find_next(next, move + 1)


N, M = map(int, input().split())
path = [[] for _ in range(N)]
for i in range(M):
    A_i, B_i = map(int, input().split())
    path[A_i - 1].append(B_i - 1)
    path[B_i - 1].append(A_i - 1)
# print(path)
mark = [None] * N
mark[0] = (0, 0)
find_next(0, 1)
if None in mark:
    print("No")
else:
    print("Yes")
    for i in range(1, len(mark)):
        print(mark[i][0] + 1)    

Fixed submission:
from collections import deque
n, m = map(int,input().split())
AB = [tuple(map(int, input().split())) for _ in range(m)]

def bfs(start):
    queue = deque()
    visited = [False] * n
    visited[start-1] = True
    queue.append(start)
    while queue:
        target = queue.popleft()
        for i in g[target]:
            if not visited[i-1]:
                ans[i-2] = target
                visited[i-1] = True
                queue.append(i)

ans = [0] * (n-1)
g = dict()
for a, b in AB:
    if a in g:
        g[a].append(b)
    if b in g:
        g[b].append(a)
    if a not in g:
        g[a] = [b]
    if b not in g:
        g[b] = [a]
start = 1
bfs(start)
if len([i for i in ans if i == 0]) == 0:
    print("Yes")
    print(*ans, sep="\n")
else:
    print("No")