Pagini recente » Cod sursa (job #2878467) | Cod sursa (job #3248696) | Cod sursa (job #1687596) | Cod sursa (job #1476703) | Cod sursa (job #1261782)
#include <vector>
#include <set>
#include <algorithm>
#include <cctype>
#include <cstdlib>
#include <cmath>
#include <stack>
#include <queue>
#include <cstring>
#include <string>
#include <cstdio>
#include <climits>
#define PII pair < int , int >
#define MP make_pair
#define PB push_back
#define F first
#define S second
#define LL long long
#define NMAX 20
using namespace std;
int sol[10001],x,y,nivel,n,dist,q[100001],p,u,d[100001];
bool ok[100001];
vector <int> g[100001];
void bfs(int nod)
{
memset(q,0,sizeof(q));
p=u=1;
q[p]=nod;
d[nod]=1;
while(p<=u)
{
nod=q[p];
ok[nod]=true;
for(vector <int> :: iterator it=g[nod].begin(); it!=g[nod].end();it++)
{
if(!ok[*it]){q[++u]=*it; d[*it]=d[nod]+1; }
}
p++;
}
}
int main()
{ freopen("darb.in","r",stdin);
freopen("darb.out","w",stdout);
scanf("%d",&n);
int i;
for(i=1;i<n;i++)
{
scanf("%d %d",&x,&y);
g[x].PB(y);
}
for(vector <int> :: iterator it=g[1].begin(); it!=g[1].end();it++)
{
int r=*it;
bfs(r);
}
sort(d+1,d+n+1);
printf("%d",d[n]+d[n-1]+1);
return 0;
}