Pagini recente » Cod sursa (job #3248228) | Cod sursa (job #2954273) | Cod sursa (job #428094) | Cod sursa (job #2257403) | Cod sursa (job #1814105)
#include <iostream>
#include <cstdio>
#include <vector>
#include <stack>
#include <bitset>
#define cout cerr
#define MAX 100005
using namespace std;
int n,m,x,y;
//vector <int> a[MAX];
vector <int> a[MAX];
stack <int> b;
stack <int> coada;
pair <int, int> muchii[5*MAX];
bitset<5*MAX> vis;
int main()
{
freopen("ciclueuler.in","r",stdin);
freopen("ciclueuler.out","w",stdout);
scanf("%d %d",&n,&m);
for(int i=1; i<=m; i++)
{
scanf("%d %d",&x,&y);
a[x].push_back(i);
a[y].push_back(i);
muchii[i]=make_pair(x,y);
vis[i]=1;
}
bitset<1> TR=0;
for(int i=1; i<=n; i++)
if(a[i].size()%2==1)
TR[0]=1;
if(TR[0])
printf("-1");
else
{
coada.push(1);
while(coada.size())
{
int k=coada.top();
//cout<<k<<": ";
if(a[k].size())
{
x=a[k].front();
a[k].erase(a[k].begin());
if(vis[x])
{
if(muchii[x].first == k)
coada.push(muchii[x].second);
else coada.push(muchii[x].first);
vis[x]=0;
}
}
else
{
printf("%d ",k);
coada.pop();
}
}
}
return 0;
}