Pagini recente » Cod sursa (job #1499765) | Cod sursa (job #1630652) | Cod sursa (job #2108126) | Cod sursa (job #2319520) | Cod sursa (job #2148752)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("darb.in");
ofstream fout ("darb.out");
const int Nmax = 100005;
int dist[Nmax] , n;
vector < int > L[Nmax];
bitset < Nmax > viz;
queue < int > Q;
inline void BFS(int nod)
{
viz . reset();
for(int i = 1 ; i <= n ; i++)
dist[i] = 0;
Q . push(nod);
viz[nod] = true;
dist[nod] = 1;
while(! Q . empty())
{
int x = Q . front();
Q . pop();
for(auto i : L[x])
if(!viz[i])
{
viz[i] = true;
dist[i] = dist[x] + 1;
Q . push(i);
}
}
}
int main()
{
int left , distmax , x , y;
fin >> n;
for(int i = 1 ; i < n ; i++)
{
fin >> x >> y;
L[x] . push_back(y);
L[y] . push_back(x);
}
BFS(1);
left = 1;
for(int i = 2 ; i <= n ; i++)
if(dist[left] < dist[i]) /// capatul stanga al lantului maximal
left = i;
BFS(left);
distmax = 0;
for(int i = 1 ; i <= n ; i++)
distmax = max(distmax , dist[i]);
fout << distmax << "\n";
fin.close();
fout.close();
return 0;
}