Cod sursa(job #2502285)

Utilizator NicuCNicu Capatina NicuC Data 30 noiembrie 2019 17:17:54
Problema Diametrul unui arbore Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.77 kb
#include <bits/stdc++.h>

#define NMAX 100001

using namespace std;

ifstream fin("darb.in");
ofstream fout("darb.out");

int n, a, b, viz[NMAX], maxim = -1, nmax;

struct nod {
    set<int> s;
} m[NMAX];

void DFS(int nod, int dist) {
    viz[nod] = dist;
    if (viz[nod] > maxim) {
        maxim = viz[nod];
        nmax = nod;
    }
    for (int i = 1; i <= n; i++)
        if (m[nod].s.find(i) != m[nod].s.end() && viz[i] == 0)
            DFS(i, dist + 1);
}

int main() {
    int i;
    fin >> n;
    for (i = 1; i <= n - 1; i++) {
        fin >> a >> b;
        m[a].s.insert(b);
        m[b].s.insert(a);
    }
    DFS(1, 1);
    for (i = 1; i <= n; i++)
        viz[i] = 0;
    maxim=-1;
    DFS(nmax, 1);
    fout << maxim;
    return 0;
}