Cod sursa(job #1365999)

Utilizator iulianrotaruRotaru Gheorghe-Iulian iulianrotaru Data 28 februarie 2015 17:33:20
Problema Zvon Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include<cstdio>
#include<vector>
#include<algorithm>
#include<cstring>
using namespace std;
const int Nmax = 100005;
int T,N,i,X,Y,DP[Nmax];
vector <int> V[Nmax];
bool cmp(int A,int B) {return DP[A]>DP[B];}
void DFS(int X)
{   vector<int>::iterator it=V[X].begin(), sf=V[X].end();
    for(;it!=sf;it++) DFS(*it);
    sort(V[X].begin(),V[X].end(),cmp);
    it=V[X].begin(); sf=V[X].end(); int i=1;
    for(;it!=sf;it++,i++) DP[X]=max(DP[X],DP[*it]+i);
}
int main()
{   freopen("zvon.in","r",stdin); freopen("zvon.out","w",stdout);
    for(scanf("%d",&T);T;T--)
    {   scanf("%d",&N);
        memset(DP,0,sizeof(DP));
        for(i=1;i<=N;i++) V[i].clear();
        for(i=1;i<N;i++) {scanf("%d%d",&X,&Y); V[X].push_back(Y);}
        DFS(1); printf("%d\n",DP[1]);
    }
    return 0;
}