Cod sursa(job #2432923)

Utilizator MortemPlaiasu Iulia-Silvia Mortem Data 25 iunie 2019 14:55:28
Problema Ciclu Eulerian Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.77 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <list>
#include <stack>
#include <algorithm>
std::ifstream fin("ciclueuler.in");
std::ofstream fout("ciclueuler.out");

std::list<int> v[100500];
int n,m;
std::stack<int> s;
int main()
{
  fin>>n>>m;
  for(int i=0;i<m;i++)
  {
    int j,k;
    fin>>j>>k;
    v[j].push_back(k);
    v[k].push_back(j);
  }
  for(int i=1;i<=n;i++)
  {
    if(v[i].size()%2!=0)
    {
      fout<<"-1\n";
      return 0;
    }
  }
  s.push(1);
  while(!s.empty())
  {
    int tp = s.top();
    int x;
    for(x=v[tp].front();v[x].size()!=0;)
    {
      v[s.top()].pop_front();
      v[x].erase(find(v[x].begin(),v[x].end(),s.top()));
      s.push(x);
      x=v[x].front();
    }
    if(s.size()!=1)
      fout<<s.top()<<" ";
    s.pop();
  }
}