Cod sursa(job #2749441)

Utilizator dariadragomir23Dragomir Daria dariadragomir23 Data 6 mai 2021 18:09:54
Problema Diametrul unui arbore Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#include<iostream>
#include<queue>
#include<fstream>
#include<vector>
using namespace std;
ifstream f("darb.in");
ofstream g("darb.out");
int n, nodmx, lg[100005], distmx, nod1, nod2;
queue<int>q;
vector<int> G[100005];
void adaugare()
{
    int nod=q.front();
    q.pop();
    if(lg[nod]>distmx)
    {
        distmx=lg[nod];
        nodmx=nod;
    }
    for(auto &nod2:G[nod])
        if(!lg[nod2])
        {
            lg[nod2]=lg[nod]+1;
            q.push(nod2);
        }
}
void parcurgere(int nod)
{
    nodmx=nod;
    distmx=1;
    lg[nod]=1;
    q.push(nod);
    while(!q.empty())
        adaugare();
}
int main()
{
    f>>n;
    for(int i=1; i<n; i++)
    {
        f>>nod1>>nod2;
        G[nod1].push_back(nod2);
        G[nod2].push_back(nod1);
    }
    parcurgere(1);
    for (int i=1; i<=n; i++)
        lg[i]=0;
    parcurgere(nodmx);
    g<<distmx;
    return 0;
}