Cod sursa(job #750453)

Utilizator mihaipopa12Popa Mihai mihaipopa12 Data 22 mai 2012 09:59:17
Problema Zvon Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include<stdio.h>
#include<vector>
#include<algorithm>

#define maxn 100005
#define pb push_back

using namespace std;

FILE*f=fopen("zvon.in","r");
FILE*g=fopen("zvon.out","w");

int n;
int D[maxn];
vector<int>G[maxn];

struct cmp{
	inline bool operator () ( const int &a , const int &b ){
		return D[a] > D[b];
	}
};

void dfs ( int nod ){
	
	for ( vector<int>::iterator itt = G[nod].begin() ; itt != G[nod].end() ; ++itt ){
		dfs(*itt);
	}
	
	sort(G[nod].begin(),G[nod].end(),cmp());
	
	for ( int i = 0 ; i < G[nod].size() ; ++i ){
		D[nod] = max(D[nod],D[G[nod][i]]+i+1);
	}
}

int main () {
	
	int t;
	fscanf(f,"%d",&t);
	
	for ( int ii = 1 ; ii <= t ; ++ii ){
		
		fscanf(f,"%d",&n);
		for ( int i = 1 ; i <= n ; ++i ){
			G[i].clear(); D[i] = 0;
		}
		
		int a,b;
		for ( int i = 1 ; i < n ; ++i ){
			fscanf(f,"%d %d",&a,&b);
			G[a].pb(b);
		}
		
		dfs(1);
		fprintf(g,"%d\n",D[1]);
	}
	
	fclose(f);
	fclose(g);
	
	return 0;
}