Sunteți pe pagina 1din 1

Se citeste un graf. Sa se decida daca el este sau nu BIPARTIT.

#include<iostream.h>
int main()
{
int a[100][100], n, i, j,c[100], viz[100], d[100], gasit, fr=1,vf=0;
cout<<"n=";cin>>n;
for(i=1;i<=n;i++){
viz[i]=0;
d[i]=0;
for(j=i+1;j<=n;j++){
cout<<"a["<<i<<"]["<<j<<"]=";
cin>>a[i][j];
a[j][i]=a[i][j];
}
}
c[++vf]=1;
viz[1]=1;
d[1]=1;
do{
i=c[fr];
fr++;
for(j=1;j<=n;j++)
if(a[i][j] && !viz[j]){
c[++vf]=j;
viz[j]=1;
d[j]=-d[i];
}
}while(vf>=fr);
gasit=0;
for(i=1;i<n;i++)
for(j=1;j<=n;j++)
if(a[i][j] && d[i]==d[j])
gasit=1;
if(gasit)
cout<<"Graful citit nu este BIPARTIT";
else
cout<<"Graful citit este BIPARTIT";
return 0;
}

S-ar putea să vă placă și