Pagini recente » Cod sursa (job #1153180) | Cod sursa (job #2135826) | Cod sursa (job #1121148) | Cod sursa (job #912992) | Cod sursa (job #1326013)
Ian 18 la 3:40 PM
#include<iostream>
#include<fstream>
using namespace std;
ifstream f("montan.in");
class grupa5
{ public:
int n,i,j,ind,sf,a[51][51],eul[51],viz[51];
void citire();
int grade_pare(int a[51][51],int n)
{ int pare=1,grad;
for(i=1;i<=n;i++)
{ grad=0;
for(j=1;j<=n;j++)
if(a[i][j])grad++;
if(grad%2)pare=0;
}
return pare;
}
void exploateaza(int ind);
void df(int nod);
int conex(int a[51][51],int n)
{ int conex;
df(1);
conex=1;
for(int i=1;i<=n && conex;i++)
if(!viz[i])
conex=0;
if(conex)return 1;
else return 0;
}
void afis();
};
void grupa5::citire()
{ f>>n;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)f>>a[i][j];
f.close();
}
void grupa5::exploateaza(int ind)
{ for(int i=1;i<=n;i++)
if(a[eul[ind]][i])
{ a[eul[ind]][i]=0;
a[i][eul[ind]]=0;
sf++;
for(j=sf;j>ind;j--)
eul[j]=eul[j-1];
ind++;
eul[ind]=i;
exploateaza(ind);
}
}
void grupa5::df(int nod)
{ viz[nod]=1;
for(int i=1;i<=n;i++)
if(a[nod][i] && !viz[i])
df(i);
}
void grupa5::afis()
{ if(!(grade_pare(a,n) && conex(a,n))) cout<<"Graf Neeulerian";
else cout<<"Este un ciclu Eulerian:";
eul[1]=1; sf=1; ind=1;
for(i=1;i<=sf;i++) exploateaza(i);
for(i=1;i<=sf;i++) cout<<eul[i]<<" ";
}
int main()
{ grupa5 turist;
turist.citire();
turist.afis();
cout<<'\n';
for(int j=1;j<=n;j++) cout<<a[1][j]<<" ";
return 0;
}