Pagini recente » Cod sursa (job #2953407) | Cod sursa (job #2605762) | Cod sursa (job #1139504) | Cod sursa (job #3131381) | Cod sursa (job #2708888)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream in ("darb.in");
ofstream out ("darb.out");
vector <int> mat[100001];
int viz[100001],coada[100001],n,maxin=-1,maxfin=-1,nin,nfin;
void bfs(int nod){
int sf,inc;
viz[nod]=1;
sf=inc=1;
coada[inc]=nod;
while(inc<=sf){
for(int i=0;i<=mat[coada[inc]].size()-1;i++){
if(viz[mat[coada[inc]][i]]==0){
sf++;
coada[sf]=mat[coada[inc]][i];
viz[mat[coada[inc]][i]]=viz[coada[inc]]+1;
}
}
inc++;
}
}
int main()
{
int nod1,nod2,i;
in>>n;
for(i=1;i<=n;i++){
in>>nod1>>nod2;
mat[nod1].push_back(nod2);
mat[nod2].push_back(nod1);
}
bfs(1);
for(i=1;i<=n;i++)
if(viz[i]>maxin){
maxin=viz[i];
nin=i;
}
for(i=1;i<=n;i++)
viz[i]=0;
bfs(nin);
for(i=1;i<=n;i++)
if(viz[i]>maxfin){
maxfin=viz[i];
nfin=i;
}
out<<maxfin;
return 0;
}