Cod sursa(job #1202661)

Utilizator pop_bogdanBogdan Pop pop_bogdan Data 28 iunie 2014 21:51:07
Problema Zvon Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <fstream>
#include <vector>
#include <cstring>
#include <algorithm>
using namespace std;

ifstream is("zvon.in");
ofstream os("zvon.out");

int T, N, x, y;
vector <signed int> G[100001];
bool Vis[100001];
int R[100001];

void Query();
void DFS(int node);
void Clear();
bool Comp(int a, int b)
{
    return R[a] > R[b];
}

int main()
{
    is >> T;
    for ( int i = 1; i <= T; ++i )
        Query();
}

void Query()
{
    is >> N;
    for ( int i = 1; i <= N-1; ++i )
    {
        is >> x >> y;
        G[x].push_back(y);
    }
    DFS(1);
    os << R[1] << '\n';
    Clear();
}

void DFS(int node)
{
    Vis[node] = true;
    for ( int i = 0; i < G[node].size(); ++i )
    {
        if ( Vis[G[node][i]] == false )
        {
            Vis[G[node][i]] = true;
            DFS(G[node][i]);
        }
    }
    sort(G[node].begin(),G[node].end(),Comp);
    for ( int i = 0; i < G[node].size(); ++i )
        R[node] = max(R[node],R[G[node][i]] + i + 1);
}

void Clear()
{
    for ( int i = 1; i <= N; ++i )
        G[i].clear();
    memset(Vis,0,sizeof(Vis));
    memset(R,0,sizeof(R));
}