Pagini recente » Cod sursa (job #1134656) | Cod sursa (job #3285879) | Cod sursa (job #2056750) | Cod sursa (job #1341837) | Cod sursa (job #352440)
Cod sursa(job #352440)
// Catalin Balan
// Thu Oct 1 18:24:22 EEST 2009
// Zvon - Infoarena
#include <cstdio>
#include <cstdlib>
#include <vector>
#include <algorithm>
using namespace std;
#define NMAX 100002
#define CHUNK 8192
#define FIN "zvon.in"
#define FOUT "zvon.out"
char g_buf[CHUNK];
int g_p=CHUNK-1;
inline int get(FILE *f)
{
int x = 0;
while (g_buf[g_p] < '0' || g_buf[g_p] > '9')
if (++g_p == CHUNK) { fread(g_buf,1,CHUNK,f); g_p=0; }
while (g_buf[g_p] >= '0' && g_buf[g_p] <= '9') {
x = x*10 + g_buf[g_p]-'0';
if (++g_p == CHUNK) { fread(g_buf,1,CHUNK,f); g_p=0; }
}
return x;
}
vector<int> tree[NMAX];
int answ[NMAX];
int auxV[NMAX];
int n;
void solve(int node)
{
int i,nr,cost;
nr = tree[node].size();
for (i = 0; i < nr; ++i)
{
solve(tree[node][i]);
}
for (i = 0; i < nr; ++i)
{
auxV[i]=answ[tree[node][i]];
}
sort(auxV,auxV+nr);
answ[node]=0;
for (i = nr-1, cost = 1; i >= 0; --i, ++cost)
{
if (answ[node]<cost+auxV[i])answ[node]=cost+auxV[i];
}
}
int main(int argv, char ** argc)
{
FILE *f = fopen(FIN, "r");
FILE *g = fopen(FOUT, "w");
int t,i,a,b;
t = get(f);
for (int test = 1; test<= t; ++test)
{
n = get(f);
for (i = 1; i <= n; ++i)
tree[i].clear();
for (i = 1; i < n; ++i)
{
a = get(f);
b = get(f);
tree[a].push_back(b);
}
solve(1);
fprintf(g,"%d\n",answ[1]);
}
fclose(f);
fclose(g);
return EXIT_SUCCESS;
}