Cod sursa(job #3167842)

Utilizator brianabucur11Briana Bucur brianabucur11 Data 11 noiembrie 2023 10:17:04
Problema Ciclu Eulerian Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin ("ciclueuler.in");
ofstream fout ("ciclueuler.out");

struct edge {
    int x, y, ind;
};

int n, m, x, y, fr[500005];
vector <edge> v[500005];
stack <int> st;

void euler (int x) {
    for (auto i:v[x]) {
        if (!fr[i.ind]) {
            fr[i.ind]=1;
            euler(i.y);
        }
    }
    st.push(x);
}

int main() {
    fin >> n >> m;
    for (int i=1; i<=m; i++) {
        fin >> x >> y;
        v[x].push_back({x,y,i});
        v[y].push_back({x,y,i});
    }
    bool ok=false;
    for (int i=1; i<=n; i++) {
        if (v[i].size()%2==1) {
            fout << -1;
            ok=true;
        }
    }
    if (!ok) {
        euler(1);
        while (st.size()>1) {
            fout << st.top() << " ";
            st.pop();
        }
    }
    return 0;
}