Buggy python submission (verdict: Runtime Error):
N, M = map(int, input().split())

P = {}
A = []
B = []

for _ in range(M):
    a, b = map(int, input().split())
    A.append(a)
    B.append(b)

for i in range(0, N + 1):
    P[i] = []

for a, b in zip(A, B):
    P[b].append(a)
    P[a].append(b)

ans = [0] * (N + 1)
ans[1] = 1

def search(numbers):
    next_numbers = []
    for number in numbers:
        for x in P[number]:
            if ans[x] == 0:
                ans[x] = number
                next_numbers.append(x)
    if next_numbers:
        search(next_numbers)

search([1])

print('Yes')
for i in range(2, N + 1):
    print(ans[i])

Fixed submission:
N, M = map(int, input().split())

A = []
B = []

for _ in range(M):
    a, b = map(int, input().split())
    A.append(a)
    B.append(b)

P = [[] for _ in range(N + 1)]

for a, b in zip(A, B):
    P[b].append(a)
    P[a].append(b)

ans = [0] * (N + 1)
ans[1] = 1
next_numbers = [1]

while next_numbers:
    check_number = next_numbers[:]
    next_numbers = []
    for number in check_number:
        for x in P[number]:
            if ans[x] == 0:
                ans[x] = number
                next_numbers.append(x)

print('Yes')
for i in range(2, N + 1):
    print(ans[i])

Buggy python submission (verdict: Runtime Error):
N, M = map(int, input().split())

P = {}
A = []
B = []

for _ in range(M):
    a, b = map(int, input().split())
    A.append(a)
    B.append(b)

for i in range(1, N + 1):
    P[i] = []

for a, b in zip(A, B):
    P[b].append(a)
    P[a].append(b)

ans = [0] * (N + 1)
ans[1] = 1

def search(numbers):
    next_numbers = []
    for number in numbers:
        for x in P[number]:
            if ans[x] == 0:
                ans[x] = number
                next_numbers.append(x)
    if next_numbers:
        search(next_numbers)

search([1])

print('Yes')
for i in range(2, N + 1):
    print(ans[i])

Fixed submission:
N, M = map(int, input().split())

A = []
B = []

for _ in range(M):
    a, b = map(int, input().split())
    A.append(a)
    B.append(b)

P = [[] for _ in range(N + 1)]

for a, b in zip(A, B):
    P[b].append(a)
    P[a].append(b)

ans = [0] * (N + 1)
ans[1] = 1
next_numbers = [1]

while next_numbers:
    check_number = next_numbers[:]
    next_numbers = []
    for number in check_number:
        for x in P[number]:
            if ans[x] == 0:
                ans[x] = number
                next_numbers.append(x)

print('Yes')
for i in range(2, N + 1):
    print(ans[i])

Buggy python submission (verdict: Runtime Error):
N, M = map(int, input().split())

P = {}

for i in range(1, N + 1):
    P[i] = []

for _ in range(M):
    a, b = map(int, input().split())
    P[b].append(a)
    P[a].append(b)

ans = [0] * (N + 1)
ans[1] = 1

def search(numbers):
    next_numers = []
    for number in numbers:
        for x in P[number]:
            if ans[x] == 0:
                ans[x] = number
                next_numers.append(x)
    if next_numers:
        search(next_numers)


search([1])

print('Yes')
for i in range(2, N + 1):
    print(ans[i])

Fixed submission:
N, M = map(int, input().split())

A = []
B = []

for _ in range(M):
    a, b = map(int, input().split())
    A.append(a)
    B.append(b)

P = [[] for _ in range(N + 1)]

for a, b in zip(A, B):
    P[b].append(a)
    P[a].append(b)

ans = [0] * (N + 1)
ans[1] = 1
next_numbers = [1]

while next_numbers:
    check_number = next_numbers[:]
    next_numbers = []
    for number in check_number:
        for x in P[number]:
            if ans[x] == 0:
                ans[x] = number
                next_numbers.append(x)

print('Yes')
for i in range(2, N + 1):
    print(ans[i])

Buggy python submission (verdict: Runtime Error):
N, M = map(int, input().split())

P = {}

for i in range(1, N + 1):
    P[i] = []

for _ in range(M):
    a, b = map(int, input().split())
    P[b].append(a)
    P[a].append(b)

ans = [0] * (N + 1)
checker = [0] * (N + 1)
checker[1] = 1

def search(number, level):
    level += 1
    for x in P[number]:
        if checker[x] == 0:
            checker[x] = level
            ans[x] = number
            search(x, level)
        elif checker[x] > level:
            checker[x] = level
            ans[x] = number
            search(x, level)


search(1, 0)

print('Yes')
for i in range(2, N + 1):
    print(ans[i])

Fixed submission:
N, M = map(int, input().split())

A = []
B = []

for _ in range(M):
    a, b = map(int, input().split())
    A.append(a)
    B.append(b)

P = [[] for _ in range(N + 1)]

for a, b in zip(A, B):
    P[b].append(a)
    P[a].append(b)

ans = [0] * (N + 1)
ans[1] = 1
next_numbers = [1]

while next_numbers:
    check_number = next_numbers[:]
    next_numbers = []
    for number in check_number:
        for x in P[number]:
            if ans[x] == 0:
                ans[x] = number
                next_numbers.append(x)

print('Yes')
for i in range(2, N + 1):
    print(ans[i])