Cod sursa(job #2869914)

Utilizator Andrei012Trache Andrei Andrei012 Data 11 martie 2022 22:10:28
Problema Ciclu Eulerian Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.97 kb
#include <bits/stdc++.h>

using namespace std;

vector<int> ans,v[100001];
int a[500005],b[500005],parc[500005];

void ciclu(int nod)
{
    int nod1,muchie;
    while(v[nod].size()!=0)
    {
        muchie=v[nod].back();
        v[nod].pop_back();
        if(parc[muchie]==0)
        {
            if(nod==a[muchie])
                nod1=b[muchie];
            else
                nod1=a[muchie];
            parc[muchie]=1;
            ciclu(nod1);
        }
    }
    ans.push_back(nod);
}

int main()
{

    ifstream cin("ciclueuler.in");
    ofstream cout("ciclueuler.out");

    int n,m,i;
    cin>>n>>m;
    for(i=1; i<=m; ++i)
    {
        cin>>a[i]>>b[i];
        v[a[i]].push_back(i);
        v[b[i]].push_back(i);
    }
    for(i=1; i<=n; ++i)
        if(v[i].size()%2==1)
        {
            cout<<-1;
            return 0;
        }
    ciclu(1);
    for(i=0; i<(ans.size())-1; ++i)
        cout<<ans[i]<<" ";
    return 0;
}