Pagini recente » Cod sursa (job #346791) | Cod sursa (job #826021) | Cod sursa (job #1848131) | Cod sursa (job #793351) | Cod sursa (job #1997753)
#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;
}