Pagini recente » Cod sursa (job #1171301) | Cod sursa (job #1201894) | Cod sursa (job #1467507) | Cod sursa (job #2900007) | Cod sursa (job #2572724)
#include <bits/stdc++.h>
using namespace std;
ifstream f("darb.in");
ofstream g("darb.out");
vector <int> v[100100];
int last_nod,maxim,viz[100100],sol_nod,H[100100],h[100100];
void first_DFS(int nod)
{
if(H[nod]>maxim)maxim=H[nod],last_nod=nod;
viz[nod]=1;
for(int i=0;i<v[nod].size();i++)
{
int vecin=v[nod][i];
if(viz[vecin]==0)
{
H[vecin]=H[nod]+1;
viz[vecin]=1;
first_DFS(vecin);
}
}
}
void second_DFS(int nod)
{
if(h[nod]>maxim)maxim=h[nod],sol_nod=nod;
viz[nod]=0;
for(int i=0;i<v[nod].size();i++)
{
int vecin=v[nod][i];
if(viz[vecin]==1)
{
h[vecin]=h[nod]+1;
viz[vecin]=0;
second_DFS(vecin);
}
}
}
int n,i,x,y;
int main()
{
f>>n;
for(i=1;i<=n;i++)
{
f>>x>>y;
v[x].push_back(y);
v[y].push_back(x);
}
H[1]=1;maxim=0;first_DFS(1);
h[last_nod]=1;maxim=0;second_DFS(last_nod);
g<<h[sol_nod];
return 0;
}