Cod sursa(job #2407240)

Utilizator VladieftimieVlad Enia Vladieftimie Data 16 aprilie 2019 18:27:03
Problema Diametrul unui arbore Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("nr.in");

int df(int a[][100],int n,int d[],int x)
{
    for(int i=1;i<=n;i++)
        if(a[x][i] && d[i]==-1)
        {
            d[i]=d[x]+1;
            df(a,n,d,i);
        }
}

int a[100][100];

int main()
{
    int d[100],x,y,n,vf1,vf2,maxi=-1;
    fin>>n;
    for(int i=1;i<=n;i++)
        d[i]=-1;
    d[1]=0;

    for(int i=1;i<n;i++)
    {
        fin>>x>>y;
        a[x][y]=a[y][x]=1;
    }

    df(a,n,d,1);

    for(int i=1;i<=n;i++)
        if(d[i]>maxi)
        {
            maxi=d[i];
            vf2=i;
        }

    for(int i=1;i<=n;i++)
        d[i]=-1;
    d[vf2]=0;
    maxi=-1;

    df(a,n,d,vf2);

    for(int i=1;i<=n;i++)
        if(d[i]>maxi)
        {
            maxi=d[i];
            vf1=i;
        }

    maxi++;
    cout<<vf1<<' '<<vf2<<' '<<maxi;
    return 0;
}