Pagini recente » Monitorul de evaluare | Monitorul de evaluare | Borderou de evaluare (job #1225021) | Cod sursa (job #3348005) | Cod sursa (job #3324965)
#include<fstream>
#include<vector>
#include<queue>
#include<cstring>
using namespace std;
ifstream cin("darb.in");
ofstream cout("darb.out");
int N , Maxx1 , F;
vector<vector<int>>G;
int Dist[100005];
void BFS(int NodCrt){
memset(Dist,0,(N+1)*sizeof(int));
Dist[NodCrt]=1;
queue<int>Q;
Q.push(NodCrt);
while(!Q.empty()){
int Nod=Q.front();
if(Dist[Nod] > Maxx1){
Maxx1=Dist[Nod];
F=Nod;
}
Q.pop();
for(int NodNou : G[Nod]){
if(!Dist[NodNou]){
Dist[NodNou]=Dist[Nod]+1;
Q.push(NodNou);
}
}
}
}
int main()
{
cin>>N;
G.resize(N+1);
for(int i=1 ; i<=N-1 ; i++){
int Nod1 , Nod2;
cin>>Nod1>>Nod2;
G[Nod1].push_back(Nod2);
G[Nod2].push_back(Nod1);
}
BFS(1);
Maxx1=0;
BFS(F);
cout<<Maxx1<<'\n';
return 0;
}