Cod sursa(job #3269568)

Utilizator Robert_NicuNicu Robert Cristian Robert_Nicu Data 19 ianuarie 2025 18:44:16
Problema Ciclu Eulerian Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.95 kb
#include <bits/stdc++.h>
#define DIM 100001
using namespace std;

ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");

int n, m, a, b, i;
bool parcurs[5*DIM];
vector< pair< int,int > > G[DIM];
stack <int> ans;

void euler(int nod){
    ans.push(nod);
    while(!G[nod].empty()){
        auto i=G[nod].back();
        G[nod].pop_back();
        if(!parcurs[i.second]){
            parcurs[i.second]=1;
            euler(i.first);
        }
    }
}


int32_t main(){
    fin>>n>>m;
    for(i=1; i<=m; i++){
        fin>>a>>b;
        G[a].push_back(make_pair(b, i));
        G[b].push_back(make_pair(a, i));
    }
    for(i=1; i<=n; i++)
        if(G[i].size()%2){
            fout<<-1;
            return 0;
        }
    for(i=1; i<=n; i++)
        if(G[i].size()){
            euler(i);
            break;
        }
    ans.pop();
    while(!ans.empty()){
        fout<<ans.top()<<" ";
        ans.pop();
    }
}