Pagini recente » Cod sursa (job #1302858) | Cod sursa (job #1796121) | Cod sursa (job #279548) | Cod sursa (job #1707744) | Cod sursa (job #2954474)
#include <bits/stdc++.h>
#define L 100005
using namespace std;
ifstream fin("darb.in");
ofstream fout("darb.out");
vector <int> G[L];
int lev1[L], lev2[L];
bool vis1[L], vis2[L];
void DFS1(int node){
vis1[node] = true;
for (auto it : G[node])
if (!vis1[it]){
lev1[it] = lev1[node] + 1;
DFS1(it);
}
}
void DFS2(int node){
vis2[node] = true;
for (auto it : G[node])
if (!vis2[it]){
lev2[it] = lev2[node] + 1;
DFS2(it);
}
}
int main(){
int n;
fin >> n;
for (int i = 1; i < n; i++){
int a, b;
fin >> a >> b;
G[a].push_back(b);
G[b].push_back(a);
}
lev1[1] = 1;
DFS1(1);
int node = 0, mxlev = 0;
for (int i = 1; i <= n; i++)
if (lev1[i] > mxlev){
node = i;
mxlev = lev1[i];
}
lev2[node] = 1;
DFS2(node);
mxlev = 0;
for (int i = 1; i <= n; i++)
mxlev = max(mxlev, lev2[i]);
fout << mxlev << "\n";
return 0;
}