Cod sursa(job #2220290)

Utilizator Luca19Hritcu Luca Luca19 Data 11 iulie 2018 10:44:08
Problema Ciclu Eulerian Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>
#include<vector>
using namespace std;
ifstream f("ciclueuler.in");
ofstream g("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()
{
  f >> n >> m;
  for (int i = 1; i <= m; i++)
  {
    f >> x >> y;
    v[x].push_back({y, i});
    v[y].push_back({x, i});
  }
  for (int i = 1; i <= n; i++)
    if (v[i].size() % 2 != 0)
    {
      g << -1;
      return 0;
    }
  ciclu(1);
  for (int i = 1; i < k; i++)
    g << a[i] << " ";
  return 0;
}