Pagini recente » Cod sursa (job #496344) | Cod sursa (job #1920386) | Cod sursa (job #1858956) | Cod sursa (job #1244875) | Cod sursa (job #100632)
Cod sursa(job #100632)
#include <cstdio>
#include <vector>
#include <queue>
#define maxN 100001
using namespace std;
vector <int> V[maxN];
class Comp
{
public:
bool operator()(int i, int j)
{
return
V[i].size() < V[j].size();
};
};
priority_queue <int, vector <int>, Comp> pq;
int T;
int N;
int Sol;
int Ti[maxN];
int Co[maxN];
void bf()
{
int p, u, n, i, j, k, nod;
p = 1;
u = 1;
Co[1] = 1;
Ti[1] = 0;
while(p <= u)
{
nod = Co[p];
++ p;
n = V[nod].size();
for(i=0; i<n; ++i)
{
pq.push(V[nod][i]);
Co[++u] = V[nod][i];
}
V[nod].clear();
j = 1;
while(pq.empty() == false)
{
k = pq.top();
pq.pop();
Ti[k] = Ti[nod] + j;
++ j;
Sol = Ti[k] > Sol ? Ti[k] : Sol;
}
}
}
int main()
{
freopen("zvon.in", "rt", stdin);
freopen("zvon.out", "wt", stdout);
int i, a, b;
for(scanf("%d", &T); T; --T)
{
for(scanf("%d", &N), i=1; i<N; ++i)
{
scanf("%d %d", &a, &b);
V[a].push_back(b);
}
Sol = 0;
bf();
printf("%d\n", Sol);
}
return 0;
}