Cod sursa(job #2083170)

Utilizator EuAlexOtaku Hikikomori EuAlex Data 7 decembrie 2017 09:25:48
Problema Diametrul unui arbore Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <cstdio>
#include <vector>
#include <cstring>

using namespace std;

vector <int> g[100003];
int viz[100003];
int last, lung;

void dfs(int from, int l = 1) {
    viz[from] = 1;
    if(l > lung) {
        lung = l;
        last = from;
    }

    for(int k = 0; k < g[from].size(); ++ k) {
        int to = g[from][k];

        if(viz[to] == 0) {
            dfs(to, l + 1);
        }
    }
}

int main() {
    freopen("darb.in", "r", stdin);
    freopen("darb.out", "w", stdout);

    int n;
    scanf("%d", &n);

    for(int i = 1; i < n; ++ i) {
        int x, y;
        scanf("%d%d", &x, &y);
        g[x].push_back(y);
        g[y].push_back(x);
    }

    dfs(1);
    memset(viz, 0, sizeof(viz));
    dfs(last);

    printf("%d\n", lung);

    return 0;
}