Cod sursa(job #2559553)

Utilizator s.gabi7Dumitrescu Daniel s.gabi7 Data 27 februarie 2020 13:13:36
Problema Ciclu Eulerian Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.85 kb
#include <bits/stdc++.h>
#define MAX 500005
using namespace std;

bitset <MAX> seen;
array <vector <pair <int, int>>, N> G;
vector <int> S;
void DFS (int x) {
    while (!G[x].empty()) {
        auto save=G[x].back();
        G[x].pop_back();
        if (!seen[save.first])
            seen[save.first]=1,
            DFS(save.second);
    }
    S.emplace_back(x);
}

int main () {
    ifstream fin ("ciclueuler.in");
    ofstream fout ("ciclueuler.out");
    int n, m, i, j, k;
    fin >> n >> m;

    for (k=0; k<m; k++) {
        fin >> i >> j;
        G[i].emplace_back(make_pair(k, j));
        G[j].emplace_back(make_pair(k, i));
    }

    for (i=1; i<=n; i++)
        if (G[i].size()&1) {
            fout << -1;
            return 0;
        }

    DFS(1);

    for (auto i:S)
        fout << i << ' ';
    return 0;
}