Cod sursa(job #1423754)

Utilizator TeodorescuStefanEduardTeodorescu Stefan Eduard TeodorescuStefanEduard Data 22 aprilie 2015 16:23:26
Problema Ciclu Eulerian Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 1.09 kb
#include <iostream>
#include <fstream>

using namespace std;

fstream in("ciclueuler.in",ios::in);
fstream out("ciclueuler.out",ios::out);

#define nr_nod 10000
#define nr_muchii 500000

int a[nr_nod][nr_nod]={},n,m,i,j,eul[nr_muchii]={},sf=1,k;

void ciclu(int ind)
{
    for(k=1;k<=n;k++)
        if(a[eul[ind]][k])
        {
            if(eul[ind]==k)
                a[eul[ind]][k]--;
            else
            {
                a[eul[ind]][k]--;
                a[k][eul[ind]]--;
            }
            sf++;

            for(j=sf;j>ind;j--)
                eul[j]=eul[j-1];
            eul[++ind]=k;
            ciclu(ind);
        }
}


int main()
{
    in>>n>>m;
    while(in>>i>>j)
    {
        if(i==j)
            a[i][j]=a[i][j]+1;
        else
        {
            a[i][j]=a[i][j]+1;
            a[j][i]=a[j][i]+1;
        }
    }
/*
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=n;j++)
            cout<<a[i][j]<<" ";
        cout<<"\n";
    }
    cout<<"\n";
*/
    eul[1]=1;
    for(i=1;eul[i];i++)
            ciclu(i);
    for(i=1;i<sf;i++)
        out<<eul[i]<<" ";



    return 0;
}