Cod sursa(job #3283072)

Utilizator not_anduAndu Scheusan not_andu Data 8 martie 2025 09:31:19
Problema Ciclu Eulerian Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.2 kb
#include <bits/stdc++.h>

using namespace std;

#define INFILE "ciclueuler.in"
#define OUTFILE "ciclueuler.out"

const int N_MAX = 1e5;
const int M_MAX = 5e5;

int nodes, edges;
bool visited[N_MAX + 1];
vector<pair<int, int> > adj[N_MAX + 1];

vector<int> ans;

void dfs(int node){
    while(!adj[node].empty()){
        auto to = adj[node].back();
        adj[node].pop_back();
        if(!visited[to.second]){
            visited[to.second];
            dfs(to.first);
        }
    }
    ans.push_back(node);
}

void solve(){

    cin >> nodes >> edges;
    for(int i = 0; i < edges; ++i){
        int node1, node2; cin >> node1 >> node2;
        adj[node1].push_back(make_pair(node2, i));
        adj[node2].push_back(make_pair(node1, i));
    }

    for(int i = 1; i <= nodes; ++i){
        if(adj[i].size() % 2 == 1) {
            cout << -1 << '\n';
            return;
        }
    }

    dfs(1);
    ans.pop_back();
    for(auto &it : ans){
        cout << it << " ";
    }

}

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0), cout.tie(0);
    freopen(INFILE, "r", stdin);
    freopen(OUTFILE, "w", stdout);
    solve();
    return 0;
}