Cod sursa(job #2343173)

Utilizator btudorBazac Tudor btudor Data 13 februarie 2019 18:58:05
Problema Ciclu Eulerian Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.82 kb
#include <bits/stdc++.h>

using namespace std;

ifstream in("ciclueuler.in");
ofstream out("ciclueuler.out");

vector <int> g[100005];

stack <int> st;

int viz[100005],mu[100005];

void euler(int n)
{
  int o;
  while(!g[n].empty())
  {
    st.push(n);
    o=g[n].back();
    g[n].pop_back();
    g[o].erase(find(g[o].begin(),g[o].end(),n));
    n=o;
  }
}

int main()
{
  int n,c=1,i,x,y,m,p=1,no;
  in>>n>>m;
  for(i=1;i<=m;i++)
  {
    in>>x>>y;
    g[x].push_back(y);
    g[y].push_back(x);
    mu[x]++;
    mu[y]++;
  }
  for(i=1;i<=n;i++)
    if(mu[i]%2==1)
    {
      p=0;
      break;
    }
  if(c==0 || p==0)
    out<<"-1";
  else
  {
    no=1;
    do
    {
      euler(no);
      no=st.top();
      out<<no<<" ";
      st.pop();
    }while(!st.empty());
  }
  return 0;
}