Cod sursa(job #3220376)

Utilizator AlbertPavPavalache Albert AlbertPav Data 3 aprilie 2024 13:20:57
Problema Diametrul unui arbore Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <fstream>
#include <vector>
using namespace std;
const int NMAX = 100001;

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

int n, nod, mx, viz[NMAX];
vector<int>G[NMAX];

void citire()
{
    f >> n;
    int x, y, m = n - 1;
    while(m--)
    {
        f >> x >> y;
        G[x].push_back(y);
        G[y].push_back(x);
    }
}

void DFS(int x)
{
    for(const auto &y : G[x])
        if(viz[y] == 0)
        {
            viz[y] = viz[x] + 1;
            DFS(y);
        }
}

void detnod()
{
    for(int i = 1; i <= n; i++)
        if(viz[i] > mx)
        {
            mx = viz[i];
            nod = i;
        }
    for(int i = 1; i <= n; i++)
        viz[i] = 0;
    viz[nod] = 1;
}

int main()
{
    citire();
    viz[1] = 1;
    DFS(1);
    detnod();
    DFS(nod);
    for(int i=1;i<=n;i++)
        mx=max(mx,viz[i]);
    g<<mx;
    return 0;
}