Cod sursa(job #1501140)

Utilizator andrei_diaconuAndrei Diaconu andrei_diaconu Data 13 octombrie 2015 00:15:10
Problema Zvon Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <fstream>
#include <vector>
#include <algorithm>
#include <string.h>

#define NMax 100010

using namespace std;

ifstream f("zvon.in");
ofstream g("zvon.out");

int t, n, mtime[NMax];
vector<int> G[NMax];

bool cmp(int a, int b)
{
    return mtime[a] > mtime[b];
}

void DFS(int node)
{
    for (vector<int>::iterator it = G[node].begin(); it != G[node].end(); it++)
        DFS(*it);
        
    sort(G[node].begin(), G[node].end(), cmp);
    
    int inc = 1;
    for (vector<int>::iterator it = G[node].begin(); it != G[node].end(); it++, inc++)
        if (mtime[node] < mtime[*it] + inc)
            mtime[node] = mtime[*it] + inc;
}

int main()
{
    f>>t;
    
    for (; t--; ) {
        f>>n;
        
        int node1, node2;
        for (int i=1; i<=n-1; i++) {
            f>>node1>>node2;
            
            G[node1].push_back(node2);
        }
        
        DFS(1);
        
        g<<mtime[1]
        <<"\n";
        
        memset(mtime, 0, sizeof (mtime));
        for (int i=1; i<=n; i++)
            G[i].clear();
    }
    
    
    
    return 0;
}