Cod sursa(job #3326137)

Utilizator vladneaguVladneagu vladneagu Data 27 noiembrie 2025 14:45:15
Problema Ciclu Eulerian Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.04 kb
#include <fstream>
#include <vector>
#include <bitset>
using namespace std;
const int maxn=1e5+5;
const int maxm=5e5+5;
ifstream cin("ciclueuler.in");
ofstream cout("ciclueuler.out");
vector<pair<int,int>> adj[maxn];
int poz[maxn];
bitset<maxm> bt;
int indg[maxn];
vector<int> topor;
void dfs(int nod) {
    while (poz[nod]<adj[nod].size()) {
        int u=adj[nod][poz[nod]].first;
        int id=adj[nod][poz[nod]].second;
        poz[nod]++;
        if (bt[id])continue;
        bt[id]=true;
        dfs(u);
    }
    topor.push_back(nod);
}
void solve() {
    int n,m;
    cin>>n>>m;
    for (int i=0;i<m;i++) {
        int l,r;
        cin>>l>>r;
        indg[l]++;
        indg[r]++;
        adj[l].push_back({r,i});
        adj[r].push_back({l,i});
    }
    for (int i=1;i<=n;i++) {
        if (indg[i]%2) {
            cout<<-1;
            return;
        }
    }
    dfs(1);
    reverse(topor.begin(),topor.end());
    topor.pop_back();
    for (auto nod:topor)cout<<nod<<" ";
}
signed main() {
    int t;
    t=1;
    while (t--)solve();
    return 0;
}