Pagini recente » Cod sursa (job #998287) | Cod sursa (job #2508699) | Cod sursa (job #2518479) | Cod sursa (job #573439) | Cod sursa (job #1847241)
#include <stdio.h>
#include <vector>
#include <algorithm>
#define nmax 100010
using namespace std;
int n, a, b;
int dp[nmax];
vector <int> g[nmax];
void dfs(int nod, int dad)
{
for (int i = 0; i < (int)g[nod].size(); i++)
if (g[nod][i] != dad) {
dfs(g[nod][i], nod);
dp[nod] = max(dp[nod], dp[g[nod][i]] + 1);
}
}
int main()
{
freopen("darb.in", "r", stdin);
freopen("darb.out", "w", stdout);
scanf("%d", &n);
for (int i = 1; i <= n; i++) dp[i] = 1;
for (int i = 1; i < n; i++) {
scanf("%d %d", &a, &b);
g[a].push_back(b);
g[b].push_back(a);
}
dfs(1, 0);
vector <int> ans;
for (int i = 0; i < g[1].size(); i++) ans.push_back(dp[g[1][i]]);
sort(ans.begin(), ans.end());
reverse(ans.begin(), ans.end());
if (ans.size() > 1) printf("%d", ans[0] + ans[1] + 1); else
printf("%d", ans[0] + 1);
return 0;
}