64,654
社区成员
发帖
与我相关
我的任务
分享
#include<iostream>
#include<memory.h>
#include<stdio.h>
#include<queue>
using namespace std;
int first[10005];
struct node
{
int point,next,len;
}e[1000005];
void add(int i,int u,int v,int w)
{
e[i].point=v;
e[i].next=first[u];
e[i].len=w;
first[u]=i;
}
int n,m;
int path[1000005],vis[1000005];
void dfs(int n)
{
for(int i=first[n];i;i=e[i].next)
{
if(vis[e[i].point]==0)
{
path[e[i].point]=n;
vis[e[i].point]=1;
dfs(e[i].point);
}
}
}
int main()
{
int num;
scanf("%d",&num);
while(num--)
{
scanf("%d%d",&n,&m);
int i,x,y,cnt=1;
memset(first,0,sizeof(first));
memset(vis,0,sizeof(vis));
for(i=0;i<n-1;i++)//输入n-1条路
{
scanf("%d%d",&x,&y);
add(cnt++,x,y,1);
add(cnt++,y,x,1);
}
path[m]=-1;
vis[m]=1;
dfs(m);
for(i=1;i<n;i++)
printf("%d ",path[i]);
printf("%d\n",path[n]);
}
return 0;
}