Pagini recente » Cod sursa (job #3224371) | Cod sursa (job #185727) | Cod sursa (job #1681875) | Cod sursa (job #195953) | Cod sursa (job #1709019)
#include <iostream>
#include<stdio.h>
#include<vector>
using namespace std;
#define nmax 100005
vector <int> ma[nmax];
vector <int> ::iterator it;
int inc, sf, co[nmax],t,n,a,b,ult,lung,sol, el, dist[nmax];
bool viz[nmax];
void bfs(int s){
inc=sf=1;
co[1]=s;
viz[s]=1;
dist[s]=0;
while (inc<=sf){
el=co[inc];
inc++;
for (it=ma[el].begin();it!=ma[el].end();it++)
if (!viz[*it]){
dist[*it]=dist[el]+1;
co[++sf]=(*it);
viz[(*it)]=1;
}
}
}
int main()
{
freopen("revolta.in","r",stdin);
freopen("revolta.out","w",stdout);
scanf("%d",&t);
while (t--){
scanf("%d",&n);
for (int i=1;i<n;i++){
scanf("%d %d",&a,&b);
ma[a].push_back(b);
ma[b].push_back(a);
}
bfs(0);
ult=co[n];
for (int i=0;i<n;i++)
viz[i]=dist[i]=0;
bfs(ult);
lung=dist[co[n]];
sol= (lung-1+1)/2+1;
printf("%d\n",sol);
for (int i=0;i<n;i++){
ma[i].clear();
viz[i]=0;
}
}
return 0;
}