Buggy python submission (verdict: Time Limit Exceeded):
n,m=map(int,input().split())
 
#各部屋の通じてる部屋番のリストを作る
l=[[] for _ in range(n)]
for i in range(m):
    a,b=map(int,input().split())
    l[a-1].append(b)
    l[b-1].append(a)

#深さのリストを作る
l1=sum(l, []) #一次元化
l1.insert(0,1)
l_depth=list(dict.fromkeys(l1))#深さのリスト
 
#解の出力
print('Yes')
for i in range(1,n):
    #各部屋の通じてる部屋リストを浅い順にソート
    ll=sorted(l[i], key=lambda data:l_depth.index(data))
    print(ll[0])

Fixed submission:
import networkx as nx
n,m=map(int,input().split())
s=[list(map(int,input().split())) for _ in range(m)]
 
g=nx.Graph() #無向グラフ
g.add_edges_from(s) #リストsを参照して頂点（部屋）の追加
di=nx.predecessor(g,source=1)#1から全点までの最短路におけるその点の前の点を表示
 
print("Yes")
for x in range(2,n+1):
      print(di[x][0])

Buggy python submission (verdict: Time Limit Exceeded):
n,m=map(int,input().split())
 
#各部屋の通じてる部屋番のリストを作る
l=[[] for _ in range(n)]
for i in range(m):
    a,b=map(int,input().split())
    l[a-1].append(b)
    l[b-1].append(a)

#深さのリストを作る
l1=sum(l, []) #部屋番のリストを一次元化
l_depth=[1]
l_depth_sub=[0]*n
l_depth_sub[0]+=1
for i in range(len(l1)):
    if l_depth_sub[l1[i]-1]==0:
        l_depth_sub[l1[i]-1]+=1
        l_depth.append(l1[i])
    if l_depth_sub.count(0)==0:break

#解の出力
print('Yes')
for i in range(1,n):
    #各部屋の通じてる部屋リストを浅い順にソート
    ll=sorted(l[i], key=lambda data:l_depth.index(data))
    print(ll[0])

Fixed submission:
import networkx as nx
n,m=map(int,input().split())
s=[list(map(int,input().split())) for _ in range(m)]
 
g=nx.Graph() #無向グラフ
g.add_edges_from(s) #リストsを参照して頂点（部屋）の追加
di=nx.predecessor(g,source=1)#1から全点までの最短路におけるその点の前の点を表示
 
print("Yes")
for x in range(2,n+1):
      print(di[x][0])

Buggy python submission (verdict: Time Limit Exceeded):
n,m=map(int,input().split())

#各部屋の通じてる部屋番のリストを作る
l=[[] for _ in range(n)]
for i in range(m):
    a,b=map(int,input().split())
    l[a-1].append(b)
    l[b-1].append(a)

#深さのリストを作る
l_depth=[1]
l_depth_sub=[0]*n
l_depth_sub[0]+=1
for i in range(n):
    for j in range(len(l[i])):
        if l_depth_sub[l[i][j]-1]==0:
            l_depth_sub[l[i][j]-1]+=1
            l_depth.append(l[i][j])               
    if l_depth_sub.count(0)==0:break

#解の出力
print('Yes')
for i in range(1,n):
    #各部屋の通じてる部屋リストを浅い順にソート
    ll=sorted(l[i], key=lambda data:l_depth.index(data))
    print(ll[0])

Fixed submission:
import networkx as nx
n,m=map(int,input().split())
s=[list(map(int,input().split())) for _ in range(m)]
 
g=nx.Graph() #無向グラフ
g.add_edges_from(s) #リストsを参照して頂点（部屋）の追加
di=nx.predecessor(g,source=1)#1から全点までの最短路におけるその点の前の点を表示
 
print("Yes")
for x in range(2,n+1):
      print(di[x][0])

Buggy python submission (verdict: Time Limit Exceeded):
n,m=map(int,input().split())

#各部屋の通じてる部屋番のリストを作る
l=[[] for _ in range(n)]
for i in range(m):
    a,b=map(int,input().split())
    l[a-1].append(b)
    l[b-1].append(a)

#深さのリストを作る
l_depth=[1]
l_depth_sub=[0]*n
l_depth_sub[0]+=1
for i in range(n):
    for j in range(len(l[i])):
        if l_depth_sub[l[i][j]-1]==0:
            l_depth_sub[l[i][j]-1]+=1
            l_depth.append(l[i][j])               
    if l_depth_sub.count(0)==0:break

#解の出力
print('Yes')
for i in range(1,n):
    k=10**9
    for j in range(len(l[i])):
        if l_depth.index(l[i][j])<k:#より浅い部屋へ通じるのなら更新
            k=l_depth.index(l[i][j])
    print(l_depth[k])

Fixed submission:
import networkx as nx
n,m=map(int,input().split())
s=[list(map(int,input().split())) for _ in range(m)]
 
g=nx.Graph() #無向グラフ
g.add_edges_from(s) #リストsを参照して頂点（部屋）の追加
di=nx.predecessor(g,source=1)#1から全点までの最短路におけるその点の前の点を表示
 
print("Yes")
for x in range(2,n+1):
      print(di[x][0])

Buggy python submission (verdict: Time Limit Exceeded):
n,m=map(int,input().split())
ab=[list(map(int,input().split())) for _ in range(m)]
l=[[] for _ in range(n)]
for i in range(m):#各部屋の通じてる部屋番のリストを作る
    a=ab[i][0]
    b=ab[i][1]
    l[a-1].append(b)
    l[b-1].append(a)

l_depth=[]
l_depth.append(1)
l_depth_sub=[0]*n
l_depth_sub[0]+=1

for i in range(n):#深さのリストを作る
    for j in range(len(l[i])):
        if l_depth_sub[l[i][j]-1]==0:
            l_depth_sub[l[i][j]-1]+=1
            l_depth.append(l[i][j])
                
    if l_depth_sub.count(0)==0:break

print('Yes')
for i in range(1,n):
    k=10**9
    for j in range(len(l[i])):
        if l_depth.index(l[i][j])<k:
            k=l_depth.index(l[i][j])
    print(l_depth[k])


Fixed submission:
import networkx as nx
n,m=map(int,input().split())
s=[list(map(int,input().split())) for _ in range(m)]
 
g=nx.Graph() #無向グラフ
g.add_edges_from(s) #リストsを参照して頂点（部屋）の追加
di=nx.predecessor(g,source=1)#1から全点までの最短路におけるその点の前の点を表示
 
print("Yes")
for x in range(2,n+1):
      print(di[x][0])