Cod sursa(job #2066003)

Utilizator KrosomAngelo Barbu Krosom Data 14 noiembrie 2017 17:17:09
Problema Ciclu Eulerian Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include <fstream>
#define DIM 101

using namespace std;

ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");

int a[DIM][DIM], n, sf, e[DIM];

void read()
{
    int i, j;
    while (f>>i>>j)
        {
            a[i][j]=a[j][i]=1;
            if (i>n)
                n=i;
                else
                if (j>n)
                    n=j;
        }
    f.close();
}

void Euler(int poz)
{
    for (int i=1; i<=n; i++)
        if (a[e[poz]][i]==1)
        {
            a[e[poz]][i]=a[i][e[poz]]=0;
            sf++;
            for (int j=sf; j>poz; j--)
                e[j]=e[j-1];
            poz++;
            e[poz]=i;
            Euler(poz);
        }
}

void write()
{
    for (int i=1; i<=sf; i++)
        g<<e[i]<<" ";
    g<<'\n';
    g.close();
}

int main()
{
    sf=1;
    e[sf]=1;
    read();
    int i=1;
    while (e[i])
    {
        Euler(i);
        i++;
    }
    write();
    return 0;
}