Cod sursa(job #1798997)

Utilizator lauratalaatlaura talaat lauratalaat Data 5 noiembrie 2016 17:29:44
Problema Ciclu Eulerian Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include<stdio.h>
#include<stdlib.h>
int n,m,a[201][201],k=0;
int v[41000];
void citire(){
    int i,x,y;
    scanf("%d",&n);
    while(scanf("%d%d",&x,&y)!=EOF){
        a[x][y]=1;
        a[y][x]=1;
        m++;
    }
}
void dfs ( int nod){
    int i;
    if(k==m){
        printf("%d\n",k+1);
        for(i=1;i<=k;i++)
            printf("%d ",v[i]);
        printf("%d \n",v[1]);
        exit(0);
    }
    else{
        k++;
        v[k]=nod;
        for(i=1;i<=n;i++){
            if(a[nod][i]==1){
                a[nod][i]=0;
                a[i][nod]=0;
                dfs(i);
            }
        }
            a[nod][v[k-1]]=1;
            a[v[k-1]][nod]=1;
            k--;
    }

    //}
}
int main(){
    int i;
    freopen("euler.in","r",stdin);
    freopen("euler.out","w",stdout);
    citire();
    dfs(1);
    n=k;
    /*//if(k==m-1&&a[v[k]][v[1]]==1){
        printf("%d\n",m+1);
        for(i=1;i<=m+1;i++)
            printf("%d ",v[i]);
    //}*/
    return 0;
}