Cod sursa(job #3262510)

Utilizator TimurealTimu Ionut Timureal Data 10 decembrie 2024 12:09:46
Problema Diametrul unui arbore Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.82 kb
#include <vector>
#include <iostream>
#include <fstream>
using namespace std;

int n, root = 1, a, b;
vector<vector<int> > graph;
vector<int> dist;

void dfs (int parent, int node) {
    if (dist[node] > dist[root])
        root = node;
    for (int i = 0; i < (int) graph[node].size(); i++) {
        int nxt = graph[node][i];
        if(nxt == parent) {
            continue;
        }
        dist[nxt] = dist[node] + 1;
        dfs(node, nxt);
    }
}
int main() {
    freopen("darb.in" , "r" , stdin);
    freopen("darb.out" , "w" , stdout);
    cin >> n;
    graph.resize(n+1);
    dist.resize(n+1);
    for(int i = 1; i < n; i++) {
        cin >> a >> b;
        graph[a].push_back(b);
        graph[b].push_back(a);
    }
    dfs(0, root);
    dist[root] = 0;
    dfs(0, root);
    cout << dist[root]+1 << '\n';
    return 0;
}