Cod sursa(job #211432)

Utilizator dragosmihaiDragos Oana dragosmihai Data 2 octombrie 2008 10:43:18
Problema Zvon Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.2 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;



vector<long> li[100002];
long tmin[100002];
int T;
long N;

/*
void adaug(long a,long b)
{
    nod *q=new nod;
    q->nr=b;
    q->urm=li[a];
    li[a]=q;
}
*/
long timp_minim(long x)
{
    if(li[x].empty())
    {
        tmin[x]=0;
        return 0;
    }
    vector<long> timp;
    vector<long>::iterator it;
    for(it=li[x].begin();it!=li[x].end();it++)
        timp.push_back(timp_minim(*it));
    sort(timp.rbegin(),timp.rend());
    int max=-1,i=1;;
    for(it=timp.begin();it!=timp.end();it++)
    {
        if(*it+i>max)
            max=*it+i;
        i++;
    }
    tmin[x]=max;
    return max;
}

void citire()
{
    ifstream f("zvon.in");
    ofstream g("zvon.out");
    f>>T;
    for(int i=0;i<T;i++)
    {
        f>>N;
        for(long j=0;j<N-1;j++)
        {
            long a,b;
            f>>a>>b;
            li[a].push_back(b);
           // adaug(a,b);
        }
        timp_minim(1);
        g<<tmin[1]<<endl;
        for(int i=0;i<=N;i++)
            li[i].clear();
    }
    f.close();
    g.close();
}

int main()
{
    citire();
    return 0;
}