Cod sursa(job #2856991)

Utilizator ptudortudor P ptudor Data 24 februarie 2022 18:43:33
Problema Ciclu Eulerian Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include <bits/stdc++.h>
using namespace std;

#ifdef LOCAL
ifstream in("in.in");
ofstream out("out.out");
#else
ifstream in("ciclu.in");
ofstream out("ciclu.out");
#endif

vector<int> sol,viz;
int n,m;
vector<vector<pair<int,int>>> g;

void eulerCycle(int node) {
    for (auto k : g[node]) {
        if (viz[k.second] == 0) {
            viz[k.second] = 1;
            eulerCycle(k.first);
        }
    }
    sol.push_back(node);
}
int main() {
    in >> n >> m;
    g.resize(n + 1);
    viz.resize(m + 1);
    for (int i =1 ; i <= m; i++) {
        int u,v;
        in >> u >> v;
        g[u].push_back({v,i});
        g[v].push_back({u,i});
    }

    for (int i = 1; i <= n; i++) {
        if (g[i].size() % 2 == 1) {
            out << "-1\n";
            return 0;
        }
    }

    eulerCycle(1);

    sol.pop_back();
    for (auto k : sol) {
        out << k << " ";
    }
    out << "\n";

}