Pagini recente » Cod sursa (job #2671469) | Cod sursa (job #1279790) | Cod sursa (job #1998832) | Cod sursa (job #856844) | Cod sursa (job #334013)
Cod sursa(job #334013)
#include<stdio.h>
#include<algorithm>
#include<vector>
using namespace std;
vector <int> v[100000];
vector <int> v1;
int zvon[100000];
bool cmp(int a,int b)
{
return a>b;
}
void dfs(int rad)
{
int i,curent;
zvon[rad]=0;
for(i=0;i<(int) v[rad].size();i++)
{
dfs(v[rad][i]);
v1.push_back(zvon[v[rad][i]]);
}
if(v1.size()>0)
{
sort(v1.begin(),v1.end(),cmp);
zvon[rad]+=1+v1[0];
curent=v1[0];
}
for(i=1;i<(int) v1.size();i++)
{
if(v1[i]==curent)
zvon[rad]++;
else
curent=v1[i];
}
v1.clear();
}
int main()
{
int t,n,i,a,b,j;
FILE *f=fopen("zvon.in","r");
FILE *g=fopen("zvon.out","w");
fscanf(f,"%i",&t);
for(i=0;i<t;i++)
{
fscanf(f,"%i\n",&n);
v1.clear();
for(j=0;j<n;j++)
v[j].clear();
for(j=0;j<n-1;j++)
{
fscanf(f,"%i %i\n",&a,&b);
v[a-1].push_back(b-1);
}
dfs(0);
fprintf(g,"%i\n",zvon[0]);
}
fclose(f);
fclose(g);
return 0;
}