Cod sursa(job #2214961)

Utilizator NOSCOPEPROKENDYMACHEAMACUMVREAU NOSCOPEPROKENDY Data 20 iunie 2018 16:46:05
Problema Ciclu Eulerian Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <bits/stdc++.h>
#define pb push_back
 
using namespace std;
 
ifstream fin ("ciclueuler.in");
ofstream fout ("ciclueuler.out");
 
bool viz[500002];
vector<pair<int, int> >v[100002];
int n, m, x, y;
int a[500002], k;
 
void ciclu (int x) {
  while (!v[x].empty()) {
    int p = v[x].back().second;
    int vecin = v[x].back().first;
    v[x].pop_back();
    if (!viz[p]) {viz[p] = 1; ciclu(vecin);}
  }
  a[++k] = x;
}
 
int main()
{
  fin >> n >> m;
  for (int i = 1; i <= m; i++) {
    fin >> x >> y;
    v[x].pb({y, i});
    v[y].pb({x, i});
  }
  for (int i = 1; i <= n; i++)
    if (v[i].size() % 2 != 0) {
      fout << -1;
      return 0;
    }
  ciclu(1);
  for (int i = 1; i < k; i++)
    fout << a[i] << " ";
  return 0;
}