Pagini recente » Cod sursa (job #1648528) | Cod sursa (job #3191441) | Cod sursa (job #1454264) | Cod sursa (job #2428831) | Cod sursa (job #2291085)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream f("darb.in");
ofstream g("darb.out");
vector <int> *LA;
int n,i,lmax;
bool *viz;
int df(int nod) {
int h;
viz[nod]=1;
int m1=-1,m2=-1;
for(int j=0;j<LA[nod].size();j++)
{
int x=LA[nod][j];
if(viz[x]==0)
{ viz[x]=1;
h=df(x);
if(h>m1) {
m2=m1;
m1=h;
}
else if(h>m2)
{ m2=h;
}}
}
if(m1+m2+2>lmax)
lmax=m1+m2+2;
return m1+1;
}
int main()
{ f>>n;
int x,y;
viz=new bool[n+2];
fill(viz,viz+n+2,0);
LA=new vector <int> [n+2];
for(i=1;i<=n-1;i++)
{ f>>x>>y;
LA[x].push_back(y);
LA[y].push_back(x);
}
df(1);
g<<lmax;
return 0;
}