Cod sursa(job #1487794)

Utilizator greenadexIulia Harasim greenadex Data 17 septembrie 2015 14:43:48
Problema Zvon Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <bits/stdc++.h>
#define pb push_back
#define f first
#define s second
#define pii pair<int, int>
#define mp make_pair
 
using namespace std;
 
const string name = "zvon",
             in_file = name + ".in",
             out_file = name + ".out";
 
ifstream fin(in_file);
ofstream fout(out_file);
 
const int MAX = 1e5 + 5;
int dp[MAX], t, n;
vector<int> gr[MAX];

void dfs (int node) {
	for (auto it: gr[node]) 
		dfs(it);

	vector<int> temp;
	for (auto son: gr[node])
		temp.pb(dp[son]);

	sort(temp.begin(), temp.end(), greater<int>());

	int cnt = 0;
	for (auto vaca: temp)
		dp[node] = max(++cnt + vaca, dp[node]); 

}

int main() {
	fin >> t;
	for (int test = 1; test <= t; test++) {
		fin >> n;
		
		for (int i = 1; i <= n; i++)
			gr[i].clear();
		memset(dp, 0, sizeof(dp));

		for (int a, b, i = 1; i < n; i++) {
			fin >> a >> b;
			gr[a].pb(b);
		}

		dfs(1);

		fout << dp[1] << '\n';
	}
	return 0;
}