Cod sursa(job #3300426)

Utilizator Tudor_CCTudor Cocu Tudor_CC Data 15 iunie 2025 17:37:00
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> s[100055];

vector <int> q[100055];

int a[500555];

int in=0;

bitset <500555> f;

void bk(int k)
{
    while (!s[k].empty()) {
        int v = s[k].back();
        int id = q[k].back();
        s[k].pop_back();
        q[k].pop_back();

        if (f[id]) {
            f[id] = 0;
            bk(v);
        }
    }
    ++in;
    a[in] = 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;
        s[x].push_back(y);
        q[x].push_back(i);
        s[y].push_back(x);
        q[y].push_back(i);
        f[i]=1;
    }
        bool ok=true;
        for(int i=1;i<=n;++i)
    {
        if(s[i].size()%2!=0)
        {
            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<=m;++i)
        {
            cout<<a[i]<<" ";
        }
    }
    }
    return 0;
}