标签:bsp 城市 模拟 code dfs 矩阵 表示 span scanf
1 #include <stdio.h> 2 #include <string.h> 3 #include <algorithm> 4 #include <vector> 5 6 using namespace std; 7 8 int f[100010]; // 记录到达每个城市的前一个城市的节点 9 vector< int> vec[100010]; // 用容器模拟邻接表存储边的信息 10 void dfs(int x) 11 { 12 int len = vec[x].size(); // 计算出和x城市相连的城市个数 13 for (int i = 0; i < len; i ++) 14 { 15 if (f[vec[x][i]]) // 不走重复的路 16 continue; 17 f[vec[x][i]] = x; 18 dfs(vec[x][i]); 19 } 20 } 21 int main () 22 { 23 int t,n,s,i,j,a,b; 24 scanf("%d",&t); 25 while (t --) 26 { 27 memset(f,0,sizeof(f)); 28 memset(vec,0,sizeof(vec)); 29 scanf("%d%d",&n,&s); 30 for (i = 0; i < n-1; i ++) 31 { 32 scanf("%d%d",&a,&b); // 无向边 33 vec[a].push_back(b); 34 vec[b].push_back(a); 35 } 36 f[s] = -1; dfs(s); 37 printf("%d",f[1]); 38 for (i = 2; i <= n; i ++) 39 printf(" %d",f[i]); 40 printf("\n"); 41 } 42 return 0; 43 }
标签:bsp 城市 模拟 code dfs 矩阵 表示 span scanf
原文地址:http://www.cnblogs.com/yoke/p/6771503.html