Pagini recente » Cod sursa (job #1008906) | Cod sursa (job #2012774) | Cod sursa (job #2406331) | Cod sursa (job #117547) | Cod sursa (job #1501140)
#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;
}