Cod sursa(job #1975293)

Utilizator OanaOanaOana123Oana Andreea Todirica OanaOanaOana123 Data 30 aprilie 2017 14:21:14
Problema Diametrul unui arbore Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <iostream>
#include <fstream>

using namespace std;
ifstream fin ("darb.in");
ofstream fout ("darb.out");
int A[101][101], N;
void citire()
{
    fin>>N;
    int a,b;
    for( int i=1;i<=N-1;i++)
    {
        fin>>a>>b;
        A[a][b]=1;
        A[b][a]=1;
    }
}
void bf (int x, int viz[])
{
    int p,u, c[101];
    p=u=1;
    for( int i=1;i<=N;i++)
        viz[i]=-1;
    viz[x]=0;
    c[1]=x;
    while(p<=u)
    {
        x=c[p++];
        for( int i=1;i<=N;i++)
        if(viz[i]==-1&&A[x][i]==1)
        {
            viz[i]=viz[x]+1;
            c[++u]=i;

        }
    }

}
int maxi (int viz[])
{   int M=1;

    for( int i=1;i<=N;i++)
        if(viz[i]>viz[M])
            M=i;

    return M;

}


int main()
{
    int viz[101];
    citire();
    bf(1,viz);
    int vf=maxi(viz);
    bf(vf,viz);
    int n=maxi(viz);
    fout<<viz[n]+1;

    return 0;
}