Pagini recente » Cod sursa (job #2847134) | Cod sursa (job #617910) | Cod sursa (job #1460429) | Cod sursa (job #2178834) | Cod sursa (job #1470529)
#include <stdio.h>
#include <cstring>
#include <vector>
#define maxdim 100005
using namespace std;
int n;
int D[maxdim];
vector<int> G[maxdim];
void dfs(int nod) {
for (int son : G[nod]) {
if (D[son] == 0) {
D[son] = D[nod] + 1;
dfs(son);
}
}
}
inline int getMostDistant() {
int mostDistant = 0;
for (int i = 1; i <= n; ++i) {
if (D[i] > D[mostDistant]) {
mostDistant = i;
}
}
return mostDistant;
}
int main() {
freopen("darb.in", "r", stdin);
freopen("darb.out", "w", stdout);
scanf("%d", &n);
for (int i = 1; i < n; ++i) {
int x, y;
scanf("%d %d", &x, &y);
G[x].push_back(y);
G[y].push_back(x);
}
D[1] = 1;
dfs(1);
int next_start = getMostDistant();
memset(D, 0, sizeof(D));
D[next_start] = 1;
dfs(next_start);
int diameter = 0;
for (int i = 1; i <= n; ++i) {
if (D[i] > diameter) {
diameter = D[i];
}
}
printf("%d\n", diameter);
return 0;
}