Pagini recente » Cod sursa (job #1597376) | Cod sursa (job #311827) | Cod sursa (job #373014) | Cod sursa (job #1578970) | Cod sursa (job #3291528)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("darb.in");
ofstream fout("darb.out");
int n, x, y, len1, len2, last_visited_node1, last_visited_node2;
int f1[100005], d1[100005], f2[100005], d2[100005];
vector <int> L[100005];
void dfs1 (int node) {
f1[node] = 1;
last_visited_node1 = node;
for (auto it : L[node]){
if (f1[it] == 0) {
d1[it] = d1[node] + 1;
dfs1(it);
}
}
}
void dfs2 (int node) {
f2[node] = 1;
last_visited_node2 = node;
for (auto it : L[node]){
if (f2[it] == 0) {
d2[it] = d2[node] + 1;
dfs2(it);
}
}
}
int main(){
fin >> n;
for (int i=0; i<n-1; i++){
fin >> x >> y;
L[x].push_back(y);
L[y].push_back(x);
}
d1[1] = 0;
dfs1(1);
d2[last_visited_node1] = 0;
dfs2(last_visited_node1);
fout << d1[last_visited_node1] + d2[last_visited_node2];
return 0;
}