1 10 1 1 9 1 8 8 10 10 3 8 6 1 2 10 4 9 5 3 7
-1 1 10 10 9 8 3 1 1 8
#include <cstdio>
#include <vector>
#include <cstring>
#define max 100000 + 2
using namespace std;
vector<int> vec[max];
int pre[max];
void DFS(int s){
for(int i = 0; i != vec[s].size(); ++i){
if(pre[vec[s][i]]) continue;
pre[vec[s][i]] = s;
DFS(vec[s][i]);
}
}
int main(){
int m, n, s, a, b;
scanf("%d", &m);
while(m--){
scanf("%d%d", &n, &s);
for(int i = 1; i < n; ++i){
scanf("%d%d", &a, &b);
vec[a].push_back(b);
vec[b].push_back(a);
}
DFS(s);
pre[s] = -1;
for(int i = 1; i <= n; ++i)
printf("%d ", pre[i]);
printf("\n");
memset(vec, 0, sizeof(vec));
memset(pre, 0, sizeof(pre));
}
return 0;
}NYOJ20 吝啬的国度 【深搜】,布布扣,bubuko.com
原文:http://blog.csdn.net/chang_mu/article/details/23990419