Cod sursa(job #1890308)

Utilizator FlorinHajaFlorin Gabriel Haja FlorinHaja Data 23 februarie 2017 10:51:08
Problema Diametrul unui arbore Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <fstream>
#include <cstring>
#include <vector>

using namespace std;

ifstream f("darb.in");
ofstream g("darb.out");

vector <int> ls[100005];
int viz[100005];
int n, i, x, y,maxim;

void df(int x) {
    int i, l = ls[x].size(), y;
    for (i = 0; i < l; i++) {
        y = ls[x][i];
        if (viz[y] == 0) {
            viz[y] = viz[x]+1;
            df(y);
        }
    }
}

int main() {
    f >> n;
    for (i = 1; i < n; i++) {
        f >> x >> y;
        ls[x].push_back(y);
        ls[y].push_back(x);
    }
    df(1);
    for (i = 2; i <= n; i++)
        if (viz[maxim] < viz[i])
            maxim = i;
    memset(viz, 0,sizeof(viz));
    df(maxim);
    int m1 =maxim;
    maxim =0;
    for (i = 1; i <= n;i++)
        if (viz[maxim]<viz[i]&&i!=m1)
            maxim = i;
    g << viz[maxim]+1;

    return 0;
}