Cod sursa(job #1098640)

Utilizator okros_alexandruOkros Alexandru okros_alexandru Data 4 februarie 2014 23:07:03
Problema Diametrul unui arbore Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include <fstream>
#include <vector>
#define Nmax 100100
#define Vecin Graph[Nod][i]
using namespace std;

vector <int> Graph[Nmax];
int N, Solution, Dist[Nmax];

void Dfs(int Nod, int Tata) {

    int Max1 = 0, Max2 = 0;

    for(int i = 0; i < Graph[Nod].size(); i++) {

        if(Vecin != Tata)
            Dfs(Vecin, Nod);

        if(Dist[Vecin] > Max1)
            Max2 = Max1, Max1 = Dist[Vecin];
        else
        if(Dist[Vecin] > Max2)
            Max2 = Dist[Vecin];

        }

    Dist[Nod] = Max1 + 1;
    Solution = (Solution < Dist[Nod] + Max2 ? Dist[Nod] + Max2 : Solution);

}
void Read() {

    int i, x, y;
    ifstream in("darb.in");
    in >> N;

    for(i = 1; i < N; i++) {
        in >> x >> y;
        Graph[x].push_back(y);
        Graph[y].push_back(x);
        }

    in.close();

}
void Write() {

    ofstream out("darb.out");
    out << Solution << '\n';
    out.close();

}
int main() {

    Read();
    Dfs(1, 0);
    Write();

    return 0;

}