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 }
View Code

 

#include<vector>库函数的应用

vector<int>v[100005]

用来记录与某点相连的点

无根树转化为有根数。深度搜索。

posted @ 2014-04-25 20:30  陈泽泽  阅读(179)  评论(0编辑  收藏  举报