Advertisement
Emiliatan

1131F

Mar 14th, 2019
231
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.66 KB | None | 0 0
  1. /* 1131F           */
  2. /* 124 ms, 6292 KB */
  3. #include <cstdio>
  4. #include <vector>
  5.  
  6. using namespace std;
  7.  
  8. const int MAXN = 150001;
  9.  
  10. vector<int> vec[MAXN];
  11. int diset[MAXN],n,root;
  12.  
  13. void dfs(int now)
  14. {
  15.     printf("%d ",now);
  16.     for(auto nex : vec[now])
  17.         dfs(nex);
  18. }
  19.  
  20. int find(int x)
  21. {
  22.     return (diset[x]==x?x:diset[x]=find(diset[x]));
  23. }
  24.  
  25. int main()
  26. {
  27.     scanf("%d", &n);
  28.     for(int i = 1; i <= n; i++) diset[i] = i;
  29.     for(int i = 0, u, v; i < n - 1 && scanf("%d %d", &u, &v); i++)
  30.     {
  31.         u = find(u); v = find(v);
  32.         diset[v] = u;
  33.         vec[u].emplace_back(v);
  34.         root = u;
  35.     }
  36.  
  37.     dfs(root);
  38.     return 0;
  39. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement