Cod sursa(job #2749468)

Utilizator DVDPRODavid D DVDPRO Data 6 mai 2021 19:11:31
Problema Diametrul unui arbore Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.09 kb
#include <iostream>
#include <fstream>
#include <queue>
#include <vector>

using namespace std;

ifstream fin("darb.in");
ofstream fout("darb.out");

#define NMAX 100005
int n, s;
vector<int> tree[NMAX];
queue<int> q;
int dmin[NMAX];

void read()
{
    fin>>n;
    int n1, n2;
    for(int i=0; i<n-1; i++)
    {
        fin>>n1>>n2;
        tree[n1].push_back(n2);
        tree[n2].push_back(n1);
    }
}

void newnode()
{
    int node=q.front();
    s=node;
    q.pop();
    for(auto &node2:tree[node])
        if(!dmin[node2])
    {
        dmin[node2]=dmin[node]+1;
        q.push(node2);
    }
}

void finds(int a)
{
    for(int i=1; i<=n; i++)
        dmin[i]=0;
    dmin[a]=1;
    q.push(a);
    while(!q.empty())
    {
        newnode();
    }
}

/*void findotheredge()
{
    q.push(s);
    dmin[s]=1;
    while(!q.empty())
        newnode();
    for(int i=1; i<=n; i++)
        if(dmin[i]>dmin[s])
            s=i;
}*/


int main()
{
    read();
    finds(1);
    finds(s);
    //cout<<s<<'\n';
    fout<<dmin[s];
    return 0;
}