Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define _test int _TEST; cin>>_TEST; while(_TEST--)
- #define pb push_back
- int main()
- {
- _test
- {
- int n;
- cin>>n;
- vector<vector<int>> tree(n);
- for(int i=0; i<n-1; i++)
- {
- int u, v;
- cin>>u>>v;
- u--, v--;
- tree[u].pb(v);
- tree[v].pb(u);
- }
- vector<int> cnt(n);
- vector<int> dis(n, 1e9);
- vector<int> ht(n, 0);
- function<void(int, int)> DFS = [&](int u, int p)
- {
- int f = 1;
- for(auto v: tree[u])
- {
- if(v == p) continue;
- f = 0;
- ht[v] = ht[u]+1;
- DFS(v, u);
- dis[u] = min(dis[u], dis[v]+1);
- cnt[u] += cnt[v];
- }
- if(f)
- {
- cnt[u] = 1;
- dis[u] = 0;
- }
- };
- DFS(0, -1);
- int ans = 0;
- for(int i=0; i<n; i++)
- {
- if(dis[i]!=0 && dis[i]<=ht[i])
- ans = max(ans, cnt[i]);
- }
- cout<<ans<<"\n";
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment