Pagini recente » Cod sursa (job #3217496) | Cod sursa (job #1031001) | Cod sursa (job #66026) | Utilizatori inregistrati la FMI No Stress 2012 | Cod sursa (job #1521534)
# include <cstdio>
# include <vector>
using namespace std;
FILE *f=freopen("darb.in","r",stdin);
FILE *g=freopen("darb.out","w",stdout);
const int NMAX= 100001;
vector <int> G[NMAX];
int n;
void read()
{
scanf("%d",&n);
for (int i=1;i<=n;i++)
{
int x,y;
scanf("%d %d",&x,&y);
G[x].push_back(y);
G[y].push_back(x);
}
}
int maxim=0,c1;
bool viz[NMAX];
void dfs1(int node, int dist)
{
viz[node]=true;
for (vector <int> :: iterator it=G[node].begin();it!=G[node].end();it++)
{
if (dist>maxim)
{
maxim=dist;
c1=node;
}
if (!viz[*it]) dfs1(*it,dist+1);
}
}
void dfs2(int node, int dist)
{
viz[node]=true;
for (vector <int> :: iterator it=G[node].begin();it!=G[node].end();it++)
{
if (dist>maxim)
{
maxim=dist;
}
if (!viz[*it]) dfs1(*it,dist+1);
}
}
int main()
{
read();
dfs1(1,0);
maxim=0;
for (int i=0;i<NMAX;i++) viz[i]=false;
dfs2(c1,0);
printf("%d\n",maxim+1);
return 0;
}