1 #include<queue>
2 #include<vector>
3 #include<cstdio>
4 #include<cstring>
5 #include<iostream>
6 using namespace std;
7 queue<int> q;
8 int f[100010];
9 vector<int> m[100010];//不能用二维数组,否则一直超内存,用vector定义二维数组虽然不超内存,但超时,因为它在定义是很耗时间
10 int main()
11 {
12 int i,a,b,k,len,n,start,T;
13 scanf("%d",&T);
14 while(T--)
15 {
16 scanf("%d%d",&n,&start);
17 for(i=1;i<=n;++i)//记得清空啊!
18 m[i].clear();
19 for(i=1;i<n;++i){
20 scanf("%d%d",&a,&b);
21 m[a].push_back(b);
22 m[b].push_back(a);
23 }
24 q.push(start);
25 f[start]=-1;
26 while(!q.empty()){//一般的bfs
27 k=q.front();
28 q.pop();
29 len=m[k].size();
30 for(i=0;i<len;++i)
31 if(!f[m[k][i]]){
32 q.push(m[k][i]);
33 f[m[k][i]]=k;
34 }
35 }
36 for(i=1;i<n;++i)
37 printf("%d ",f[i]);
38 printf("%d\n",f[i]);
39 memset(f,0,sizeof(f));//注意清零
40 }
41 //system("pause");
42 return 0;
43 }
44