Cod sursa(job #1900183)

Utilizator igroitaGroita Igor igroita Data 3 martie 2017 10:44:13
Problema Zvon Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.19 kb
//copy
#include <fstream>
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream fin("zvon.in");
ofstream fout("zvon.out");
int p, n;
 
const int NMAX=100010;
int tnod[NMAX];
 
vector<int> G[NMAX];
 
bool desc(int a, int b)
{
    return a>b;
}
 
void analiza(int nod)
{
    for(int i=0;i<G[nod].size();i++)
        analiza(G[nod][i]);
 
    sort(G[nod].begin(), G[nod].end(), desc);
    //ca sa plecam in ordine descrescatoare ca sa terminam cu cati mai multi arbori simultan
    for(int i=1;i<=G[nod].size();i++)
        tnod[nod]=max(tnod[nod], tnod[G[nod][i-1]]+i);
        //parcurgem lista subordonatilor de la subarborii mari spre subarborii mici, adaugand mereu cate o secunda (i) fiindca dureaza 1sec transferul catre un alt subordonat
        //retinem maximul
}
 
int main()
{
    fin>>p;
    for(int i=1;i<=p;i++)
    {
        fin>>n;
        for(int i=1;i<=n;i++)
        {
            G[i].clear();
            tnod[i]=0;
        }
 
        for(int i=1, a, b;i<n;i++)
        {
            fin>>a>>b;
            G[a].push_back(b);
        }
 
        analiza(1);
        fout<<tnod[1]<<'\n';
    }
    return 0;
}