Cod sursa(job #838570)

Utilizator raluca_vacaruVacaru Raluca-Ioana raluca_vacaru Data 19 decembrie 2012 22:40:27
Problema Ciclu Eulerian Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <cstdio>
#define MAXN 100001

using namespace std;

int n, m, nr, a[MAXN][MAXN], q[MAXN];

void read () {
    int i, x, y;
    freopen ("ciclueuler.in", "r", stdin);
    scanf ("%d%d", &n, &m);
    for (i=1; i<=m; ++i) {
        scanf ("%d%d", &x, &y);
        a[x][y] = a[y][x] = 1;
    }
    fclose (stdin);
}

void euler (int i) {
    int j;
    for (j=1; j<=n; ++j) {
        if (a[i][j] == 1) {
            a[i][j] = a[j][i] = 0;
            euler (j);
            q[++nr] = j;
        }
    }
}

void write () {
    freopen ("ciclueuler.out", "w", stdout);
    if (nr == 0) printf ("-1\n");
    else {
        int i;
        for (i=1; i<=nr; ++i)
            printf ("%d ", q[i]);
    }
    fclose (stdout);
}

int main () {
    read ();
    euler (1);
    write ();
    return 0;
}