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; }