Cod sursa(job #1833177)

Utilizator FeriCsiki Francisc Alexandru Feri Data 21 decembrie 2016 20:56:56
Problema Zvon Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <iostream>
#include <fstream>
#include <vector>
#include<algorithm>
using namespace std;

ifstream in("zvon.in");
ofstream out("zvon.out");
const int N= 100001;
int n,nrd[N],d[N];
vector<int> a[N];

bool cmp(int x, int y)
{
    return (nrd[x]>nrd[y]);
}

void parc(int x)
{
    int i,y;
    nrd[x]=1;
    for(i=0;i<a[x].size();i++)
        {
            y=a[x][i];
            parc(y);
            nrd[x]+=nrd[y];
        }
}
int maxim(int a, int b)
{
    if(a>b)
        return a;
    else
        return b;
}
void dfs(int x)
{
    int i,y,s=1;
    d[x]=0;
    for(i=0;i<a[x].size();i++)
    {
        y=a[x][i];
        dfs(y);
        d[x]=maxim(d[y]+1+i,d[x]);
        //s++;
    }
}
int main()
{
    int t,i,x,y;
    in>>t;
    while(t)
    {
        in>>n;
        for(i=1;i<n;i++)
        {
            in>>x>>y;
            a[x].push_back(y);
        }
        parc(1);
        for(i=1;i<=n;i++)
        {
            sort(a[i].begin(),a[i].end(),cmp);
            //out<<nrd[i]<<" ";
        }
        dfs(1);
        out<<d[1];
        t--;
        out<<'\n';
        for(i=1;i<=n;i++)
        {
            a[i].clear();
        }
    }
    return 0;
}