Pagini recente » Cod sursa (job #565738) | Cod sursa (job #2967512) | Cod sursa (job #2326091) | Cod sursa (job #2867334) | Cod sursa (job #3207619)
#include <iostream>
#include <fstream>
#include <cctype>
#include <cstring>
#include <algorithm>
#include <vector>
#include <stack>
#include <string>
#include <deque>
#include <queue>
#include <map>
#include <cmath>
#include <limits.h>
using namespace std;
#pragma warning(disable : 4996)
;
ifstream fin("darb.in");
ofstream fout("darb.out");
int tata[100001], n, dis1[100001], dis2[100001];
void dfs(int i, int dis[]) {
for(int x = 1; x <= n; x++)
if (x != i && (tata[i] == x || tata[x] == i) && !dis[x]) {
dis[x] = dis[i] + 1;
dfs(x, dis);
}
}
int main() {
fin >> n;
for (int i = 1; i < n; i++) {
int x, y;
fin >> x >> y;
tata[y] = x;
}
dis1[1] = 1;
dfs(1, dis1);
int maxi1 = 1;
for (int i = 2; i <= n; i++)
if (dis1[maxi1] < dis1[i]) maxi1 = i;
dis2[maxi1] = 1;
dfs(maxi1, dis2);
int maxi2 = 1;
for (int i = 2; i <= n; i++)
if (dis2[maxi2] < dis2[i]) maxi2 = i;
fout << dis2[maxi2];
return 0;
}