Cod sursa(job #2503106)

Utilizator Vlad_NituNitu Vlad-Petru Vlad_Nitu Data 2 decembrie 2019 14:17:53
Problema Diametrul unui arbore Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 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) ;
        memset(lg,0,NMAX);
        memset(viz,false,NMAX);
    diametru = 0;
    DFS(NodFinal) ;
    g << diametru + 1;
}