Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* 1131F */
- /* 124 ms, 6292 KB */
- #include <cstdio>
- #include <vector>
- using namespace std;
- const int MAXN = 150001;
- vector<int> vec[MAXN];
- int diset[MAXN],n,root;
- void dfs(int now)
- {
- printf("%d ",now);
- for(auto nex : vec[now])
- dfs(nex);
- }
- int find(int x)
- {
- return (diset[x]==x?x:diset[x]=find(diset[x]));
- }
- int main()
- {
- scanf("%d", &n);
- for(int i = 1; i <= n; i++) diset[i] = i;
- for(int i = 0, u, v; i < n - 1 && scanf("%d %d", &u, &v); i++)
- {
- u = find(u); v = find(v);
- diset[v] = u;
- vec[u].emplace_back(v);
- root = u;
- }
- dfs(root);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement