Pagini recente » Cod sursa (job #2068886) | Cod sursa (job #2890344) | Cod sursa (job #2053508) | Cod sursa (job #3209698) | Cod sursa (job #2188524)
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
ifstream f("zvon.in");
ofstream g("zvon.out");
const int NMAX = 100005;
vector <int> sons[NMAX];
int father[NMAX];
int time[NMAX];
int n, teste, m, mx = 0;
void init()
{
for (int i = 1; i <= n; i++)
{
mx = 0;
father[i] = 0;
sons[i].clear();
time[i] = 0;
}
}
void in()
{
f >> n;
for (int i = 1; i < n; i++)
{
int x, y;
f >> x >> y;
father[y] = x;
sons[x].push_back(y);
}
}
int get_max(int a, int b)
{
if (a < b)
return b;
return a;
}
void out()
{
g << mx << "\n";
}
bool cmp(int i, int j)
{
return sons[i].size() > sons[j].size();
}
void Sort()
{
for (int i = 1; i <= n; i++)
sort(sons[i].begin(), sons[i].end(), cmp);
}
void DFS(int nod, int grad)
{
time[nod] = time[father[nod]] + grad;
mx = get_max(mx, time[nod]);
for (int i = 0; i < sons[nod].size(); i++)
DFS(sons[nod][i], i + 1);
}
int main()
{
int nr_teste;
f >> nr_teste;
while (nr_teste--)
{
in();
Sort();
DFS(1, 0);
out();
init();
}
}