Pagini recente » Cod sursa (job #2572342) | Cod sursa (job #2777035) | Cod sursa (job #327134) | Cod sursa (job #1159290) | Cod sursa (job #1687818)
#include <fstream>
#include <vector>
#include <queue>
#include <algorithm>
#define nmax 100005
using namespace std;
int niv[nmax];
vector <int> a[nmax];
queue <int> q;
vector <int> leaf;
int diametru;
void bf()
{
int i,x,y;bool ok=1;
while (!q.empty())
{
x=q.front();q.pop();ok=1;
for (i=0;i<a[x].size();i++)
{
y=a[x][i];
if (!niv[y])
{
niv[y]=niv[x]+1;
q.push(y);ok=0;
}
}
if (ok)
{
leaf.push_back(x);
for (i=leaf.size()-2;i>=0;i--)
{
diametru=max(diametru,niv[x]+niv[leaf[i]]-1);
}
}
}
}
int main()
{
ifstream f("darb.in");
ofstream g("darb.out");
int i,n,x,y;
f>>n;
for (i=1;i<n;i++)
{
f>>x>>y;
a[x].push_back(y);
a[y].push_back(x);
}
niv[1]=1;q.push(1);bf();
g<<diametru<<'\n';
f.close();
g.close();
return 0;
}