Cod sursa(job #1599485)

Utilizator andreey_047Andrei Maxim andreey_047 Data 13 februarie 2016 21:54:48
Problema Zvon Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <bits/stdc++.h>

using namespace std;

const int nmax = 100008;

int N,dp[nmax],best,a[nmax];
vector<int> G[nmax];

inline void DFS(int nod){
 for(auto it: G[nod])
     DFS(it);

 a[0] = 0;
  for(auto it: G[nod])
    a[++a[0]] = dp[it]+1;

  sort(a+1,a+a[0]+1);

  for(int i = a[0];i;--i)
    dp[nod] = max(dp[nod],a[i]+a[0]-i);


}

int main(){
    int i,x,y,T;
    freopen ("zvon.in","r",stdin);
    freopen ("zvon.out","w",stdout);
    scanf("%d\n",&T);
    while(T--){
        scanf("%d\n",&N);
        for(i = 1; i < N; ++i){
            scanf("%d %d\n",&x,&y);
            G[x].push_back(y);
        }
        DFS(1);
        if(N==1)dp[1]=0;
        printf("%d\n",dp[1]);
        for(i = 1; i <= N; ++i)
            dp[i]=0,G[i].clear();
    }
    return 0;
}