Pagini recente » Cod sursa (job #1110024) | Cod sursa (job #630125) | Cod sursa (job #1745660) | Cod sursa (job #1012300) | Cod sursa (job #1973881)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
const int nmax=100005;
vector<int>v[nmax];
int d[nmax],mx[nmax];
int maxim,n,i,x,y;
void dfs(int x)
{
int it;
for(int i=0;i<v[x].size();i++)
{
it=v[x][i];
if(!d[it])
{
d[it]=d[x]+1;
dfs(it);
if(mx[x]+mx[it]-(2*d[x]-1)>maxim)
maxim=mx[x]+mx[it]-(2*d[x]-1);
if(mx[it]>mx[x])
mx[x]=mx[it];
}
}
if(d[x]>mx[x])
mx[x]=d[x];
}
int main()
{
ifstream f("darb.in");
ofstream g("darb.out");
f>>n;
for(i=1;i<=n-1;i++)
{
f>>x>>y;
v[x].push_back(y);
v[y].push_back(x);
}
d[1]=1;
dfs(1);
if(mx[1]>maxim)
maxim=mx[1];
g<<maxim;
return 0;
}