Cod sursa(job #2175250)

Utilizator geniucosOncescu Costin geniucos Data 16 martie 2018 16:14:20
Problema Ciclu Eulerian Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include<bits/stdc++.h>

using namespace std;

int N, M, x[500009], y[500009];
bool deleted[500009];
vector < int > v[100009];

void euler (int nod)
{
    for (auto it : v[nod])
        if (!deleted[it])
        {
            deleted[it] = 1;
            euler (x[it] ^ y[it] ^ nod);
            printf ("%d ", nod);
        }
}

int main ()
{
freopen ("ciclueuler.in", "r", stdin);
freopen ("ciclueuler.out", "w", stdout);

scanf ("%d %d", &N, &M);
for (int i=1; i<=M; i++)
{
    scanf ("%d %d", &x[i], &y[i]);
    v[x[i]].push_back (i);
    v[y[i]].push_back (i);
}
for (int i=1; i<=N; i++)
    if (v[i].size () & 1)
    {
        printf ("-1\n");
        return 0;
    }
euler (1), printf ("\n");
return 0;
}