Pagini recente » Cod sursa (job #2107455) | Cod sursa (job #1395018) | Cod sursa (job #1250054) | Cod sursa (job #1054585) | Cod sursa (job #2982328)
#include <iostream>
#include <map>
#include <fstream>
#include <queue>
#include <cstring>
#include <vector>
using namespace std;
ifstream f ("darb.in");
ofstream g ("darb.out");
int last , n , x , y , maxim , niv[100005] , viz[100005];
vector <int>v[100005];
void bfs (int nod)
{
queue <int>c;
viz[nod] = 1;
c.push (nod);
while (!c.empty())
{
int nod = c.front();
last = nod;
c.pop();
for (int i = 0 ; i < v[nod].size () ; i++)
{
int vecin = v[nod][i];
if (viz[vecin] == 0)
{
viz[vecin] = 1;
c.push(vecin);
}
}
}
}
void dfs (int nod)
{
viz[nod] = 1;
maxim = max (maxim , niv[nod]);
for (int i = 0 ; i < v[nod].size () ; i++)
{
int vecin = v[nod][i];
if (viz[vecin] == 0)
{
niv[vecin] = niv[nod] + 1;
dfs (vecin);
}
}
}
int main()
{
f >> n;
for (int i = 1 ; i < n ; i++)
{
f >> x >> y;
v[x].push_back (y);
v[y].push_back (x);
}
bfs (1);
memset (viz , 0 , sizeof (viz));
dfs (last);
g << maxim + 1;
return 0;
}