南阳理工20题

来源:互联网 发布:淘宝上药店是真的吗 编辑:程序博客网 时间:2024/05/20 11:22
#include<cstdio>#include<vector>#include<cstring>using namespace std;vector<int>v[100005];   //此时的v已经相当于一个可任意变大小的二维数组int city[100005];void DFS(int n){for (int i = 0; i<v[n].size(); ++i)   //  和 n  每个相邻的 城市都遍历一次{if (city[v[n][i]])continue;city[v[n][i]] = n;DFS(v[n][i]);}}int main(){int n, m, t, i, a, b;scanf("%d", &t);while (t--){memset(city, 0, sizeof(city));memset(v, 0, sizeof(v));scanf("%d%d", &n, &m);city[m] = -1;for (i = 0; i<n - 1; i++){scanf("%d%d", &a, &b);v[a].push_back(b);     //  a和 b 相连v[b].push_back(a);  //  当然  b 也和 a 相连}DFS(m);   //  从第几个城市开始for (i = 1; i <= n; i++)printf("%d ", city[i]);printf("\n");}return 0;}

原创粉丝点击