Cod sursa(job #2872485)

Utilizator SlavicGGuzun Veaceslav SlavicG Data 17 martie 2022 10:15:58
Problema Ciclu Eulerian Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.23 kb
#include "bits/stdc++.h"
using namespace std;
 
#define ll long long
 
#define       forn(i,n)              for(int i=0;i<n;i++)
#define          all(v)              v.begin(), v.end()
#define         rall(v)              v.rbegin(),v.rend()
 
#define            pb                push_back
#define          sz(a)               (int)a.size()
 
const int N = 1e5 + 10;
set<int> adj[N];
vector<int> ans;
void dfs(int u) {
    while(sz(adj[u])) {
        int v = *adj[u].begin();
        adj[u].erase(v);
        adj[v].erase(u);
        dfs(v);
    }
    ans.pb(u);
}
void solve() {
    int n, m;
    cin >> n >> m;
    for(int i = 0;i < m; ++i) {
        int u, v; cin >> u >> v;
        --u, --v;
        adj[u].insert(v);
        adj[v].insert(u);
    }

    for(int i = 0;i < n; ++i) {
        if(sz(adj[i]) & 1) {
            cout << "-1\n";
            return;
        }
    }
    dfs(0);
    for(auto x: ans) {
        cout << x + 1 << " ";
    }
    cout << "\n";
}
 
int32_t main() {
    freopen("ciclueuler.in", "r", stdin);
    freopen("ciclueuler.out", "w", stdout);
    ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    int t = 1;
    //cin >> t;
    while(t--) {
        solve();
    }
}