Cod sursa(job #3203832)

Utilizator VanillaSoltan Marian Vanilla Data 14 februarie 2024 19:16:31
Problema Ciclu Eulerian Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.99 kb
#include <bits/stdc++.h>
using namespace std;
string __fname = "ciclueuler"; ifstream in (__fname + ".in"); ofstream out (__fname + ".out"); 
#define cin in 
#define cout out
const int maxn = 1e5 + 2;
const int maxm = 5e5 + 2;
pair <int, int> edge [maxm];
vector <int> v [maxn];
bitset <maxm> used;

void solve(int id){

  return;
}

void euler (int u) { // v -> u
  while (!v[u].empty()) {
    int id = v[u].back();
    if (used[id] == true) {
      v[u].pop_back();
      continue;
    }
    int v = (edge[id].first == u ? edge[id].second : edge[id].first);
    used[id] = 1;
    euler(v);
  }
  cout << u << " ";
}


int main(){
  ios_base::sync_with_stdio(0); cin.tie(0); cout << fixed; cout << setprecision(10);
  int n,m;
  cin >> n >> m;
  for (int i = 0; i < m; i++){
    int x,y;
    cin >> x >> y;
    edge[i] = {x,y};
    v[x].push_back(i);
    v[y].push_back(i);
  }
  for (int i = 1; i <= n; i++){
    if (v[i].size() % 2 == 1) {
      cout << "-1";
      return 0;
    }
  }
  euler(1);
  return 0;
}