Cod sursa(job #929545)

Utilizator popa_marcelMarcel Popa popa_marcel Data 27 martie 2013 08:51:20
Problema Zvon Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include<cstdio>
#include<vector>
#include<queue>
#include<utility>
#include<algorithm>

#define NMAX 100005

FILE *f=fopen("zvon.in","r");
FILE *g=fopen("zvon.out","w");

using namespace std;

vector<int> G[NMAX];
int test,n,DP[NMAX];
inline int max(int a,int b)
{
    if(a>b)
    return a;
    else
        return b;

}
bool cmp(int i,int j)
{
     return DP[i]>DP[j];
}
void read( void )
{
    fscanf(f,"%d",&n);
    for(size_t i(1); i < n ; ++i )
    {
        int x,y;
        fscanf(f,"%d%d",&x,&y);
        G[x].push_back(y);
       }
}
void DFS(int node)
{

    for(int i(0) ; i < G[node].size(); ++i)
        DFS(G[node][i]);
    sort(G[node].begin(),G[node].end(),cmp);
   for(int i(0) ; i < G[node].size() ; ++i )
    DP[node]=max(DP[node],DP[G[node][i]]+i+1);

}
void erase( void )
{
    for(int i(1) ; i <=n ;++i )
    {
        DP[i]=0;
        G[i].clear();
    }
   n=0;
}
int main( void )
{
    fscanf(f,"%d",&test);
    while(test)
        {
        read();
        DFS(1);
        fprintf(g,"%d\n",DP[1]);
        erase();
        --test;
    }
    fclose(f);
    fclose(g);
}