Pagini recente » Cod sursa (job #250305) | Cod sursa (job #349105) | Cod sursa (job #998497) | Cod sursa (job #1656905) | Cod sursa (job #1222785)
#include <iostream>
#include <iomanip>
#include <fstream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;
#define MAX 100010
vector<int> Gr[MAX];
queue<int> Q;
int N, D[MAX];
int Bfs(int X) {
int Y;
memset(D, 0, sizeof(D));
D[X] = 1;
Q.push(X);
while (Q.size()) {
X = Q.front();
Q.pop();
for (int i = 0; i < Gr[X].size(); i++) {
Y = Gr[X][i];
if (!D[Y]) {
D[Y] = D[X] + 1;
Q.push(Y);
}
}
}
Y = X;
for (int i = 1; i <= N; i++)
if(D[i] > D[Y]) Y = i;
return Y;
}
int main() {
int X, Y;
freopen("darb.in","r",stdin);
freopen("darb.out","w",stdout);
scanf("%d", &N);
for (int i = 1; i < N; i++) {
scanf("%d %d", &X, &Y);
Gr[X].push_back(Y);
Gr[Y].push_back(X);
}
X = Bfs(1);
X = Bfs(X);
printf("%d\n", D[X]);
return 0;
}