Cod sursa(job #2503107)

Utilizator Vlad_NituNitu Vlad-Petru Vlad_Nitu Data 2 decembrie 2019 14:23:09
Problema Diametrul unui arbore Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.95 kb
#include <bits/stdc++.h>
#define NMAX 100005
using namespace std;
ifstream f ("darb.in") ;
ofstream g ("darb.out") ;
int N , x, y , NodFinal , lg[NMAX] , diametru;
vector <int> v[NMAX];
bool viz[NMAX];
void DFS (int nod)
{
     int len = v[nod].size();
    viz[nod] = true;
    for (int i = 0 ; i < len ; ++i)
    {
        int vec = v[nod][i] ;
        if (!viz[vec]) {
                lg[vec] = lg[nod] + 1;
                if (lg[vec] > diametru)
            {   diametru = lg[vec];
                NodFinal = vec;
            }

                DFS(vec);
        }
    }
}
int main()
{
    f >> N ;
    for (int i = 1 ; i <= N - 1 ; ++i)
    {
        f >> x >> y;
        v[x].push_back(y) ;
        v[y].push_back(x) ;
    }
    DFS(1) ;
        for (int i = 1 ; i <= N ; ++i)
        {
            viz[i] = false;
            lg[i] = 0;

        }
        diametru = 0;
    DFS(NodFinal) ;
    g << diametru + 1;
}