01/10/2018, 15:42
Tim chu trình Euler của đô thị
Em đang đọc đoạn code này, search được ở trên mạng
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("graf.txt");
int a[100][100],n,m,g[100],b[100],c[100],v[100];
void citire()
{
int i,x,y;
fin>>n>>m;
for(i=1;i<=m;i++)
{
fin>>x>>y;
a[x][y]=1;
b[x]++;///exterior
c[y]++;///interior
}
}
void df_recursiv(int k)
{
int i=1;
v[k]=1;
a[k][i]=2;
for(int i=1;i<=n;i++)
if(a[k][i]==1 && v[i]==0)
df_recursiv(i);
}
int vizitare(int v[100],int n)
{
int i;
for(i=1;i<=n;i++)
if(v[i]==0)
return i;
return 0;
}
int conex()
{
if(vizitare(v,n)!=0)
return 0;
return 1;
}
int eulerian()
{
int i;
if(conex()!=1)
return 0;
for(i=1;i<=n;i++)
{
if(b[i]!=c[i])
return 0;
}
return 1;
}
void circuit_eulerian(int x)
{
int i,j;
i=x;
do{
cout<<i<<" ";
j=1;
while(a[i][j]!=1 && j<=n)
j++;
if(j<=n)
{
a[i][j]=0;
i=j;
}
else
{
j=1;
while(a[i][j]!=1 && j<=n)
j++;
if(j<=n)
{
a[i][j]=0;
i=j;
}
}
}while(j<=n);
}
int main()
{
citire();
df_recursiv(1);
if(eulerian()==1){
cout<<"Graful este eulerian"<<endl;
circuit_eulerian(1);
}
else
cout<<"Graful nu este eulerian";
return 0;
}
có đoạn này trong code em chưa hiểu để làm gì, các anh chị giải thích cho em với ạ
void df_recursiv(int k)
{
int i=1;
v[k]=1;
a[k][i]=2;
for(int i=1;i<=n;i++)
if(a[k][i]==1 && v[i]==0)
df_recursiv(i);
}
Em cám ơn.
Bài liên quan