Pagini recente » Cod sursa (job #1606107) | Cod sursa (job #2061789) | Cod sursa (job #2610019) | Cod sursa (job #3290378) | Cod sursa (job #2258490)
#include <iostream>
#include <vector>
#include <queue>
#include <fstream>
#define lim 100004
using namespace std;
ifstream f("darb.in");
ofstream g("darb.out");
vector <int> muc[lim];
queue <int> q;
int n,x,y,maxim=-1,nod,poz=-1;
int lant[lim];
int frunze[lim];
int main()
{
f>>n;
for (int i=1;i<=n-1;i++)
{
f>>x>>y;
muc[x].push_back(y);
muc[y].push_back(x);
}
q.push(1);
while (!q.empty())
{
nod=q.front();
q.pop();
for (int i=0;i<muc[nod].size();i++)
if (lant[muc[nod][i]]==0)
{
lant[muc[nod][i]]=lant[nod]+1;
if (lant[muc[nod][i]]>maxim)
{
maxim=lant[muc[nod][i]];
poz=muc[nod][i];
}
q.push(muc[nod][i]);
}
}
maxim=-1;
q.push(poz);
while (!q.empty())
{
nod=q.front();
q.pop();
for (int i=0;i<muc[nod].size();i++)
if (frunze[muc[nod][i]]==0)
{
frunze[muc[nod][i]]=frunze[nod]+1;
if (frunze[muc[nod][i]]>maxim) maxim=frunze[muc[nod][i]];
q.push(muc[nod][i]);
}
}
g<<maxim+1;
f.close();
g.close();
return 0;
}