Cod sursa(job #3243507)

Utilizator Shaan_StefanShaan Stefan Shaan_Stefan Data 19 septembrie 2024 09:18:39
Problema Diametrul unui arbore Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.98 kb
#include <fstream>
#include <vector>
#include <queue>

#define NMAX 100000
using namespace std;
ifstream fin("darb.in");
ofstream fout("darb.out");
vector<int> adc[NMAX+10];
int n, x, y;
int *BFS(int x)
{
    int vis[NMAX+10]={0};
    int mxd=0, nd=0;
    queue<int> qub;
    qub.push(x);
    vis[x]=1;
    while(!qub.empty())
    {
        int tp=qub.front();
        qub.pop();
        for(int i=0; i<adc[tp].size(); i++)
        {
            if(vis[adc[tp][i]]==0)
            {
                vis[adc[tp][i]]=vis[tp]+1;
                mxd=vis[tp]+1;
                nd=adc[tp][i];
                qub.push(adc[tp][i]);
            }
        }
    }
    int *nx=new(int[2]);
    nx[0]=mxd, nx[1]=nd;
    return nx;
}
int main()
{
    fin>>n;
    while(fin>>x>>y)
    {
        adc[x].push_back(y);
        adc[y].push_back(x);
    }

    int *rz=BFS(1);
    int *nrz=BFS(rz[1]);
    fout<<nrz[0];
    free(rz);
    free(nrz);
    return 0;
}