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
0