Buggy python submission (verdict: Time Limit Exceeded):
from collections import deque

n, m = map(int, input().split())
a = [0] * m
b = [0] * m
for i in range(m):
    aa, bb = map(int, input().split())
    a[i], b[i] = aa, bb

path = [[] for _ in range(n+1)]
for i in range(m):
    aa, bb = a[i], b[i]
    path[bb].append(aa)
    path[aa].append(bb)

ans = [0] * (n+1)
que = deque([[1, 1]])
while len(que) > 0:
    idx = que.popleft()
    if ans[idx[0]] == 0:
        ans[idx[0]] = idx[1]
    for i in path[idx[0]]:
        if ans[i] == 0:
            deque.append(que, [i, idx[0]])

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

Fixed submission:
import sys
from collections import deque
import time
input = sys.stdin.readline

n, m = map(int, input().split())

path = [[] for _ in range(n+1)]

for i in range(m):
    a, b = map(int, input().split())
    path[a].append(b)
    path[b].append(a)

ans = [0] * (n+1)
alr = [0] * (n+1)
que = deque([1])
while len(que) > 0:
    idx = que.popleft()
    for i in path[idx]:
        if alr[i] == 0:
            que.append(i)
            ans[i] = idx
            alr[i] = 1
        else:
            pass

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

Buggy python submission (verdict: Time Limit Exceeded):
from collections import deque

n, m = map(int, input().split())
a = [0] * m
b = [0] * m
for i in range(m):
    aa, bb = map(int, input().split())
    a[i], b[i] = aa, bb

path = [[] for _ in range(n+1)]
for i in range(m):
    aa, bb = a[i], b[i]
    path[bb].append(aa)
    path[aa].append(bb)

ans = [0] * (n+1)
que = deque([[1, 1]])
while len(que) > 0:
    idx = que.popleft()
    if ans[idx[0]] == 0:
        ans[idx[0]] = idx[1]
    for i in path[idx[0]]:
        if ans[i] == 0:
            deque.append(que, [i, idx[0]])

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

Fixed submission:
import sys
from collections import deque
import time
input = sys.stdin.readline

n, m = map(int, input().split())

path = [[] for _ in range(n+1)]

for i in range(m):
    a, b = map(int, input().split())
    path[a].append(b)
    path[b].append(a)

ans = [0] * (n+1)
alr = [0] * (n+1)
que = deque([1])
while len(que) > 0:
    idx = que.popleft()
    for i in path[idx]:
        if alr[i] == 0:
            que.append(i)
            ans[i] = idx
            alr[i] = 1
        else:
            pass

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

Buggy python submission (verdict: Time Limit Exceeded):
from collections import deque

n, m = map(int, input().split())
a = [0] * m
b = [0] * m
for i in range(m):
    aa, bb = map(int, input().split())
    a[i], b[i] = aa, bb

path = [[] for _ in range(n+1)]
for i in range(m):
    aa, bb = a[i], b[i]
    path[bb].append(aa)
    path[aa].append(bb)

ans = [0] * (n+1)
que = deque([[1, 1]])
while len(que) > 0:
    idx = que.popleft()
    if ans[idx[0]] == 0:
        ans[idx[0]] = idx[1]
    for i in path[idx[0]]:
        if ans[i] == 0:
            deque.append(que, [i, idx[0]])

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

Fixed submission:
import sys
from collections import deque
import time
input = sys.stdin.readline

n, m = map(int, input().split())

path = [[] for _ in range(n+1)]

for i in range(m):
    a, b = map(int, input().split())
    path[a].append(b)
    path[b].append(a)

ans = [0] * (n+1)
alr = [0] * (n+1)
que = deque([1])
while len(que) > 0:
    idx = que.popleft()
    for i in path[idx]:
        if alr[i] == 0:
            que.append(i)
            ans[i] = idx
            alr[i] = 1
        else:
            pass

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