Cod sursa(job #1708225)

Utilizator andru47Stefanescu Andru andru47 Data 26 mai 2016 19:35:19
Problema Ciclu Eulerian Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <bits/stdc++.h>
#define pb push_back
using namespace std;
const int NMAX = 100000 + 5;
int n,m,x,y;
vector <int> g[NMAX];
int main()
{
    freopen("ciclueuler.in","r",stdin);
    freopen("ciclueuler.out","w",stdout);
    scanf("%d %d\n", &n, &m);
    for (int i = 1; i<=m; ++i)
    {
        scanf("%d %d\n", &x,&y);
        g[x].pb(y);
        g[y].pb(x);
    }
    int i = 1;
    for (int i = 1; i<=6; ++i)
        if (g[i].size()%2==1)
    {
        printf("-1");
        return 0;
    }
    while(g[i].size()>0)
    {
        printf("%d ", i);
        int x = g[i].back();
        g[i].pop_back();
        vector <int>::iterator it;
        for (it = g[x].begin(); it!=g[x].end(); ++it)
        {
            int a = *it;
            if (*it==i)
            {
                g[x].erase(it);
                break;
            }
        }
        i = x;
    }
    return 0;
}