Cod sursa(job #3362421)

Utilizator And_etcAndrei P And_etc Data 8 august 2026 16:49:54
Problema Ciclu Eulerian Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.26 kb
#include <bits/stdc++.h>

using namespace std;

vector <int> v[100555],id[100555];

int f[500555],ir,r[500555];

void bk(int k)
{
    while(v[k].size())
    {
        int nd=v[k].back();
        int ix=id[k].back();
        v[k].pop_back();
        id[k].pop_back();
        if(f[ix]==0)
        {
            f[ix]=1;
            bk(nd);
        }
    }
    ++ir;
    r[ir]=k;
}

int main()
{
    ifstream cin("ciclueuler.in");
    ofstream cout("ciclueuler.out");
    int n,m,x,y;
    cin>>n>>m;
    for(int i=1;i<=m;++i)
    {
        cin>>x>>y;
        v[x].push_back(y);
        id[x].push_back(i);
        v[y].push_back(x);
        id[y].push_back(i);
    }
    bool ok=true;
    for(int i=1;i<=n;++i)
    {
        if(v[i].size()%2==1)
        {
            ok=false;
        }
    }
    if(ok==false)
    {
        cout<<-1;
    }
    else
    {
        bk(1);
        for(int i=1;i<=m;++i)
        {
            if(f[i]==0)
            {
                ok=false;
            }
        }
        if(ok==false)
        {
            cout<<-1;
        }
        else
        {
            for(int i=1;i<ir;++i)
            {
                cout<<r[i]<<" ";
            }
        }
    }
    return 0;
}