Pagini recente » Cod sursa (job #2635709) | Cod sursa (job #2471673) | Cod sursa (job #2635700) | Cod sursa (job #3161241) | Cod sursa (job #2703297)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f ("darb.in");
ofstream g ("darb.out");
int a[10001][10001],lant[10000];
struct nrlant{
int lung,nod;
};
void citire_arb(int n)
{
int x,y;
while(n)
{
f>>x>>y;
a[x][y]=a[y][x]=1;
n--;
}
}
int frunza(int n,int i,int &noda)
{
int j,s=0;
for(j=1;j<=n;j++)
{
if(a[i][j]==1)
s++,noda=j;
if(s>1) break;
}
return s==1;
}
int lungime_l(int n,int noda)
{
int i;
int s=2;
while(noda>1)
{
for(i=1;a[noda][i]==0;i++);
s++;
noda=i;
}
return s;
}
int main()
{
int n,i,s1=0,s2=0,noda,x=0;
f>>n;
citire_arb(n);
for(i=1;i<=n;i++)
{
if(frunza(n,i,noda)) x=lungime_l(n,noda);
if(x>s1) s1=x;
else if(x>s2) s2=x;
}
g<<s1+s2-1;
f.close();
g.close();
return 0;
}