Cod sursa(job #3300425)

Utilizator Tudor_CCTudor Cocu Tudor_CC Data 15 iunie 2025 17:33:12
Problema Ciclu Eulerian Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.18 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)
{
    for(int i=0;i<s[k].size();++i)
    {
        if(f[q[k][i]]==1)
        {
            f[q[k][i]]=0;
            bk(s[k][i]);
        }
    }
    ++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=m;i>=1;--i)
        {
            cout<<a[i]<<" ";
        }
    }
    }
    return 0;
}