Cod sursa(job #2576635)

Utilizator MoodyFaresFares Mohamad MoodyFares Data 6 martie 2020 21:18:39
Problema Ciclu Eulerian Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include <cstdio>
#include <vector>
#include <unordered_map>

using namespace std;

const int MAX_N = 100000;

vector<int> g[5 + MAX_N];
bool vis[5 + MAX_N];
vector<int> euler;
unordered_map<int, int> del[5 + MAX_N];

void dfs(int node) {
  for (auto u : g[node]) {
    if (del[u][node] > 0) {
      del[u][node]--;
      del[node][u]--;
      dfs(u);
    }
  }
  euler.push_back(node);
}

int main() {
  freopen("ciclueuler.in", "r", stdin);
  freopen("ciclueuler.out", "w", stdout);

  int n, m;
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= m; i++) {
    int u, v;
    scanf("%d%d", &u, &v);
    g[u].push_back(v);
    g[v].push_back(u);
    del[u][v]++;
    del[v][u]++;
  }

  dfs(1);
  euler.pop_back();
  if (euler.size() != m) {
    printf("-1");
    return 0;
  }
  for (auto it : euler)
    printf("%d ", it);

  return 0;
}