Cod sursa(job #2868101)

Utilizator mirunacoroiCoroi Miruna Elena mirunacoroi Data 10 martie 2022 18:46:21
Problema Diametrul unui arbore Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.95 kb
#include <fstream>
#include <vector>
#define NMAX 1000004

using namespace std;
ifstream fin("darb.in");
ofstream fout("darb.out");
int n, niv[NMAX], c[NMAX], ultim, prim, vf, nr1;
bool viz[NMAX];
vector <int> G[NMAX];
void bfs();

int main()
{
    int i, a, b;
    fin>>n;
    for (i=1; i<=n; i++)
    {
        fin>>a>>b;
        G[a].push_back(b);
        G[b].push_back(a);
    }
    c[1]=1;
    niv[1]=1;
    ultim=prim=1; viz[1]=1;
    bfs();
    for (i=1; i<=n; i++) niv[i]=viz[i]=0;
    c[1]=vf; viz[vf]=1;
    niv[vf]=1;
    ultim=prim=1;
    bfs();
    fout<<niv[vf];
    return 0;
}
void bfs()
{
    int i, x;
    while (prim<=ultim)
    {
        x=c[prim];
        prim++;
        for (i=0; i<G[x].size(); i++)
            if (!viz[G[x][i]])
            {
                c[++ultim]=G[x][i];
                viz[G[x][i]]=1;
                niv[G[x][i]]=niv[x]+1;
                vf=G[x][i];
            }
    }
}