Cod sursa(job #1567479)

Utilizator fromzerotoheroFROM ZERO fromzerotohero Data 13 ianuarie 2016 12:45:44
Problema Diametrul unui arbore Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include <iostream>
#include <fstream>
#include <vector>

#define nmax 100001

using namespace std;

int n, maximumDepth, auxNode;
bool viz[nmax];
vector <int> ARB[nmax];

void dfs(int nod, int depth)
{

    viz[nod] = true;

    if (depth > maximumDepth)
    {

        maximumDepth = depth;
        auxNode = nod;

    }

    for (int i = 0; i < ARB[nod].size(); i++)
        if (!viz[ARB[nod][i]])
            dfs(ARB[nod][i], depth+1);

}

void init()
{
    for (int i = 1; i <= n; i++)
        viz[i] = false;
}

int main()
{

    ifstream fi("darb.in");
    ofstream fo("darb.out");

    fi >> n;

    for (int i = 1; i <= n; i++)
    {
        int a, b;
        fi >> a >> b;
        ARB[a].push_back(b);
        ARB[b].push_back(a);
    }

    dfs(1, 1);

    maximumDepth = 0;

    init();

    dfs(auxNode, 1);

    fo << maximumDepth << "\n";

    fi.close();
    fo.close();

    return 0;
}