Cod sursa(job #1094150)

Utilizator Al3ks1002Alex Cociorva Al3ks1002 Data 28 ianuarie 2014 22:33:19
Problema Zvon Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 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)
{
    for(vector<int>::iterator it=V[X].begin();it!=V[X].end();it++) DFS(*it);
    sort(V[X].begin(),V[X].end(),cmp); int i=1;
    for(vector<int>::iterator it=V[X].begin();it!=V[X].end();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;
}