Pagini recente » Cod sursa (job #2952175) | Cod sursa (job #3223957) | Cod sursa (job #732285) | Cod sursa (job #729021) | 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;
}