Cod sursa(job #3142042)

Utilizator Mihai_OctMihai Octavian Mihai_Oct Data 18 iulie 2023 15:51:09
Problema Diametrul unui arbore Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.71 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("darb.in");
ofstream fout("darb.out");
int n, x, y, i, id;
int d[100002], r[100002];
vector<int> a[100002];

static inline void parc(int x, int u, int v[]) {
    v[x] = 1 + v[u];
    for(auto it : a[x]) {
        if(v[it] == 0) parc(it, x, v);
    }
}

static inline int maxi(int v[]) {
    int r = 1;
    for(int i = 2; i <= n; i++) {
        if(v[i] > v[r]) r = i;
    }
    return r;
}

int main() {
    fin >> n;
    for(i = 1; i < n; i++) {
        fin >> x >> y;
        a[x].push_back(y);
        a[y].push_back(x);
    }

    parc(1, 0, d);
    id = maxi(d);
    parc(id, 0, r);
    fout << r[maxi(r)];

    return 0;
}