Cod sursa(job #1424112)

Utilizator fratiladanielFratila Daniel fratiladaniel Data 23 aprilie 2015 15:26:57
Problema Diametrul unui arbore Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 1.13 kb
#include <iostream>
#include <fstream>

using namespace std;

void citire(int a[100][100],int &n)
{int i,x,y;
ifstream in("darb.in");
    in>>n;
    for (i=1;i<=n;i++)
    {in>>x>>y;;
     a[x][y]=a[y][x]=1;
    }
in.close();
}
void BF(int a[100][100],int v[100],int c[100],int d[100],int &n,int l,int &last)
{int p,u,x,i,k=0;;
v[l]=1;
c[0]=l;
p=0;
u=0;
while (p<=u)
{
    x=c[p];
    p++;
    for (i=1;i<=n;i++)
        if ((a[x][i]==1)&&v[i]!=1)
             {u++;
              c[u]=i;
              v[i]=1;
              d[i]=d[x]+1;
              last=i;
             }
}
}
int main()
{int n,i,j,s=0,a[100][100],v[100],c[100],d[100],last;
ofstream out("darb.out");
citire(a,n);
for (i=1;i<=n-1;i++)
   for (j=i+1;j<=n;j++)
     s+=a[i][j];
if (2*s==2*(n-1))
        {
            BF(a,v,c,d,n,1,last);
            for (i=1;i<=n;i++)
                  {v[i]=0;
                   c[i]=0;
                   d[i]=0;
                  }
            BF(a,v,c,d,n,last,last);
            out<<d[last]+1;
        }
        else cout<<"Graful dat la intrare nu este arbore"<<endl;
out.close();
return 0;
}