Pagini recente » Cod sursa (job #819691) | Cod sursa (job #2187847) | Cod sursa (job #93288) | Cod sursa (job #2807284) | Cod sursa (job #2849638)
#include <bits/stdc++.h>
#define cin fin
#define cout fout
using namespace std;
ifstream cin ("ciclueuler.in");
ofstream cout ("ciclueuler.out");
vector<int>G[100008];
vector<int>stackk;
vector<int>ans;
int car[500008],n,m,i,k,din[100008],in[100008];
int main()
{
cin>>n>>m;
for(i=1;i<=m;++i)
{
int x,y;
cin>>x>>y;
G[x].push_back(i);
G[y].push_back(i);
in[i]=y;
din[i]=x;
}
for (i=1;i<=n;i++)
if (G[i].size()%2)
break;
if (i<=n)
{
cout<<"-1";
exit(0);
}
stackk.push_back(1);
while(!stackk.empty())
{
k=stackk.back();
if(!G[k].empty())
{
int i=G[k].back();
G[k].pop_back();
if(car[i]==0)
{
car[i]=1;
if(in[i]==k)
stackk.push_back(din[i]);
else
stackk.push_back(in[i]);
}
}
else
{
stackk.pop_back();
ans.push_back(k);
}
}
int j;
for(j=0;j<m;j++)
cout<<ans[j]<<" ";
return 0;
}