Cod sursa(job #1840252)

Utilizator PaulStighiStiegelbauer Paul-Alexandru PaulStighi Data 3 ianuarie 2017 23:57:22
Problema Zvon Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include<fstream>
#include<cstring>
#include<vector>
#include<algorithm>
#define NMax 100005
using namespace std;
ifstream fin("zvon.in");
ofstream fout("zvon.out");

int T,N,Sol;
int DP[NMax];

vector <int> G[NMax];

void Read()
{
    fin>>N;

    memset(DP,0,sizeof(DP));

    for(int i = 1 ; i <= N ; ++i)
        G[i].clear();

    for(int i = 1 ; i < N ; ++i)
    {
        int x,y;    fin>>x>>y;
        G[x].push_back(y);
    }
}

bool Comp(int A,int B)
{
    return (DP[A] > DP[B]);
}

void DFS(int Nod)
{
    for(int i = 0 ; i < (int) G[Nod].size() ; ++i)
    {
        int Vecin = G[Nod][i];
        DFS(Vecin);
    }

    sort(G[Nod].begin(),G[Nod].end(),Comp);

    for(int i = 0 ; i < (int) G[Nod].size() ; ++i)
    {
        int Vecin = G[Nod][i];
        DP[Nod] = max(DP[Nod],DP[Vecin] + i + 1);
    }
}

int main()
{
    fin>>T;

    while(T--)
    {
        Read();
        DFS(1);
        fout<<DP[1]<<"\n";
    }

    fin.close();
    fout.close();
    return 0;
}