Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- const int N = 1e5 + 5;
- vector<int> adj[N];
- int dp[N];
- void DFS(int u, int p){
- int mx = 0;
- vector<int> tme;
- for(int v : adj[u]){
- if(v == p){
- continue;
- }
- DFS(v, u);
- tme.push_back(dp[v]);
- }
- sort(tme.begin(), tme.end(), greater<int>());
- for(int i = 0; i < tme.size(); ++i){
- mx = max(mx, tme[i] + i + 1);
- }
- dp[u] = mx;
- }
- int main(){
- int nVertex, rt;
- scanf("%d%d", &nVertex, &rt);
- for(int i = 1; i < nVertex; ++i){
- int u, v;
- scanf("%d%d", &u, &v);
- adj[u].push_back(v);
- adj[v].push_back(u);
- }
- DFS(rt, 0);
- cout << dp[rt];
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement