Pagini recente » Cod sursa (job #1306197) | Cod sursa (job #1873617) | Cod sursa (job #2235634) | Cod sursa (job #352654) | Cod sursa (job #2558568)
//#include <iostream>
#include <bits/stdc++.h>
using namespace std;
ifstream in("ciclueuler.in");
ofstream out("ciclueuler.out");
const int NMax=100005;
const int Mmax=500005;
int n,m;
stack <int >s;
int viz[Mmax];
struct muchie
{
int x,y;
}muc[Mmax];
vector <int>v[NMax],sol;
void citire()
{
in>>n>>m;
for(int i=1;i<=m;i++)
{
int x,y; in>>x>>y;
v[x].push_back(i);
v[y].push_back(i);
muc[i]={x,y};
}
}
void sol1()
{
s.push(1);
while(!s.empty())
{
int nod=s.top();
if(!v[nod].empty())
{
int ind=v[nod].back();
v[nod].pop_back();
if(!viz[ind])
{
viz[ind]=1;
if(muc[ind].x==nod)
s.push(muc[ind].y);
else
s.push(muc[ind].x);
}
}
else
{
sol.push_back(s.top());
s.pop();
}
}
for(int j=0;j<sol.size()-1;j++)
out<<sol[j]<<" ";
}
int main()
{
citire(); bool ok=1;
for(int i=1;i<=n;i++)
if(v[i].size()%2!=0)
ok=0;
if(ok)
sol1();
else
out<<-1;
return 0;
}