nyoj 20
http://acm.nyist.net/JudgeOnline/message.php?msg=已提交&url=status.php%3Fpid%3D20&second=0
1 #include<stdio.h> 2 #include<iostream> 3 #include<vector> 4 #include<string.h> 5 using namespace std; 6 vector<int>v[100005]; 7 int pre[100005]; 8 void func(int x) 9 { 10 int i; 11 for(i=0;i<v[x].size();i++) 12 { 13 if(pre[v[x][i]]) 14 continue; 15 pre[v[x][i]]=x; 16 func(v[x][i]); 17 } 18 19 } 20 int main() 21 { 22 int m; 23 scanf("%d",&m); 24 while(m--) 25 { 26 int n,s,i,j,a,b; 27 scanf("%d %d",&n,&s); 28 memset(v,0,sizeof(v)); 29 memset(pre,0,sizeof(pre)); 30 for(i=0;i<n-1;i++) 31 { 32 scanf("%d %d",&a,&b); 33 v[a].push_back(b); 34 v[b].push_back(a); 35 } 36 pre[s]=-1; 37 func(s); 38 for(i=1;i<n;i++) 39 printf("%d ",pre[i]); 40 printf("%d\n",pre[n]); 41 } 42 return 0; 43 }
#include<vector>库函数的应用
vector<int>v[100005]
用来记录与某点相连的点
无根树转化为有根数。深度搜索。