Cod sursa(job #334028)

Utilizator bent_larsenSturzu Antonio-Gabriel bent_larsen Data 25 iulie 2009 00:22:20
Problema Zvon Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include<stdio.h>
#include<algorithm>
#include<vector>
#include<string.h>

using namespace std;

vector <int> v[100000];
int zvon[100000];

bool cmp(int a,int b)
{
	return a>b;
}

void dfs(int rad)
{
	int i,curent;
	vector <int> v1;

	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];
	}
}		

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);
		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;
}