Cod sursa(job #1997753)

Utilizator SenibelanMales Sebastian Senibelan Data 5 iulie 2017 11:50:37
Problema Zvon Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <fstream>
#include <vector>
#include <algorithm>
#include <cstring>

using namespace std;

ifstream in("zvon.in");
ofstream out("zvon.out");

const int NMAX = 100005;
const int TMAX = 60;
int T, N;
int t;
int cost[TMAX][NMAX];
vector <int> G[NMAX];

bool cmp(int a, int b){
	return cost[t][a] > cost[t][b];
}


void DFS(int nod){
	int subordonat;
	for(int i = 0; i < G[nod].size(); ++i){
		subordonat = G[nod][i];
		DFS(subordonat);
	}
	if(G[nod].size()){
		sort(G[nod].begin(), G[nod].end(), cmp);
		for(int i = 0; i < G[nod].size(); ++i)
			cost[t][nod] = max(cost[t][nod], cost[t][G[nod][i]] + i + 1);
	}
}


void ReadAndSolve(){
	int a, b;
	in >> T;
	t = T;
	for(int i = 1; i <= T; ++i){
		in >> N;
		memset(cost, 0, sizeof(cost));
		for(int j = 1; j < N; ++j){
			in >> a >> b;
			G[a].push_back(b);
		}
		DFS(1);
		out << cost[t][1] << "\n";
		for(int i = 1; i <= N; ++i)
			G[i].clear();
		t--;
	}
}

int main(){
	ReadAndSolve();
	return 0;
}