Cod sursa(job #3041444)

Utilizator MocalinnoMoca Andrei Catalin Mocalinno Data 31 martie 2023 15:17:50
Problema Ciclu Eulerian Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.01 kb
#include <bits/stdc++.h>

#define GARDA fin.close(); fout.close(); exit(0);

using namespace std;

string const& task("ciclueuler");
ifstream fin(task + ".in");
ofstream fout(task + ".out");

int const N(1e5 + 5), M(5e5 + 5);

int a[M], b[M], n, m, p[N];
bool used[M];
vector<int> euler, g[N];

inline void DFS(int const& x = 1) {
    while (p[x] < static_cast<int>(g[x].size())) {
        int e = g[x][p[x]++];
        if (used[e])
            continue;
        used[e] = true;
        int y = a[e];
        if (x == y)
            y = b[e];
        DFS(y);
    }
    euler.emplace_back(x);
}

signed main() {

    fin >> n >> m;
    for (int i = 1; i <= m; ++i) {
        fin >> a[i] >> b[i];
        g[a[i]].emplace_back(i);
        g[b[i]].emplace_back(i);
    }
    for (int i = 1; i <= n; ++i)
        if (g[i].size() & 1) {
            fout << -1;
            GARDA
        }
    DFS();
    euler.pop_back();
    for (int const& x : euler)
        fout << x << ' ';


	GARDA
}