Pagini recente » Cod sursa (job #792335) | Monitorul de evaluare | Cod sursa (job #3299053) | Cod sursa (job #3328863) | Cod sursa (job #3349999)
#include <iostream>
#include <vector>
#include <fstream>
#include<queue>
using namespace std;
ifstream fin("darb.in");
ofstream fout("darb.out");
int N;
const int nmax=100001;
vector<int>g[nmax];
int dist[nmax];
int bfs(int node){
for(int i = 1; i <= N; i++)
dist[i] = -1;
dist[node] = 0;
int furthest = node;
queue<int>q;
q.push(node);
while(!q.empty()){
int node=q.front();
for(int i=0; i<g[node].size(); i++){
int vecin=g[node][i];
if(dist[vecin]==-1){
dist[vecin]=dist[node]+1;
if(dist[vecin] > dist[furthest])
furthest = vecin;
q.push(vecin);
}
}
q.pop();
}
return furthest;
}
int main(){
fin>>N;
for(int i=0; i<N - 1; i++){
int x,y;
fin>>x>>y;
g[x].push_back(y);
g[y].push_back(x);
}
int A = bfs(1);
int B=bfs(A);
fout<<dist[B] + 1;
return 0;
}