Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define ll long long
- #define ff first
- #define ss second
- #define pb push_back
- int main()
- {
- int n;
- cin>>n;
- vector<set<int>> tree(n);
- vector<int> connected(n);
- for(int i=0; i<n-1; i++)
- {
- int u, v;
- cin>>u>>v;
- u--, v--;
- tree[u].insert(v);
- tree[v].insert(u);
- connected[u]++;
- connected[v]++;
- }
- set<pair<int, int>> sp;
- for(int i=0; i<n; i++)
- sp.insert({connected[i], i});
- vector<int> x;
- vector<int> done(n);
- while(sp.size() && (*sp.begin()).ff == 1)
- {
- auto e = *sp.begin();
- sp.erase(sp.begin());
- if(done[e.ss]) continue;
- done[e.ss] = 1;
- int u = *tree[e.ss].begin();
- x.pb(u);
- for(auto v: tree[u])
- {
- done[v] = 1;
- for(auto c: tree[v])
- {
- if(c == u) continue;
- sp.erase({connected[c], c});
- connected[c]--;
- sp.insert({connected[c], c});
- tree[c].erase(v);
- }
- }
- }
- vector<int> ans;
- for(auto e: x)
- ans.pb(tree[e].size());
- sort(ans.begin(), ans.end());
- for(auto e: ans)
- cout<<e<<" ";
- cout<<"\n";
- }
Advertisement
Add Comment
Please, Sign In to add comment