Pagini recente » Cod sursa (job #1366971) | Cod sursa (job #329061) | Cod sursa (job #553753) | Cod sursa (job #131690) | Cod sursa (job #2749428)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <cstring>
using namespace std;
ifstream fin ("darb.in");
ofstream fout ("darb.out");
const int MAXN=100005;
int n, x, y;
vector<int> g[MAXN];
int viz[MAXN], frunza, dist;
void bfs(int start_node)
{
memset(viz, 0, MAXN);
queue<int>q;
q.push(start_node);
viz[start_node]=1;
frunza=0; dist=0;
while(!q.empty())
{
int crt_node=q.front();
if(viz[crt_node]>dist) dist=viz[crt_node], frunza=crt_node;
for(auto &v: g[crt_node])
if(!viz[v]){
q.push(v);
viz[v]=viz[crt_node]+1;
}
q.pop();
}
}
int main()
{
fin>>n;
for(int i=1; i<=n-1; i++)
{
fin>>x>>y;
g[x].push_back(y);
g[y].push_back(x);
}
bfs(1);
bfs(frunza);
fout<<dist;
return 0;
}