Cod sursa(job #3291528)

Utilizator radugheoRadu Mihai Gheorghe radugheo Data 5 aprilie 2025 00:28:39
Problema Diametrul unui arbore Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1 kb
#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;
}