Cod sursa(job #3314498)

Utilizator amunnumeVlad Patrascu amunnume Data 10 octombrie 2025 10:37:37
Problema Ciclu Eulerian Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
const int N=1e5+5,M=5e5+5;
struct elem
{
  int f,s;
};
int n,m,i,j,x,y,c[N];
bool f[M];
vector<elem> v[N];
stack<int> s;
vector<int> sol;
void eul()
{
  s.push(1);
  while(!s.empty())
  {
    int x=s.top();
    if(!v[x].empty())
    {
      elem y=v[x].back();
      v[x].pop_back();
      if(!f[y.s])
      {
        f[y.s]=1;
        s.push(y.f);

      }
    }
    else
    {
      sol.push_back(x);
      s.pop();
    }
  }
}
void print()
{
  int sz=sol.size();
  for(int i=0;i<sz-1;++i)
    fout<<sol[i]<<' ';
}
int main()
{
  fin>>n>>m;
  for(i=1;i<=m;++i)
  {
    fin>>x>>y;
    v[x].push_back({y,i});
    v[y].push_back({x,i});
  }
  for(i=1;i<=n;++i)
  {
    if(v[i].size()%2)
    {
      fout<<-1;
      exit(0);
    }
  }
  eul();
  print();
  return 0;
}