Pagini recente » Cod sursa (job #2414747) | Cod sursa (job #1354876) | Cod sursa (job #1576831) | Cod sursa (job #1930949) | Cod sursa (job #2870541)
#include <bits/stdc++.h>
#define cin fin
#define cout fout
using namespace std;
ifstream cin ("ciclueuler.in");
ofstream cout ("ciclueuler.out");
struct muchiee
{
int x,y;
int uz;
};
muchiee muc[500004];
stack<int>stackk;
vector<int>sol,G[500004];
int a,b,n,m,k,muchie,i;
void euler(int nodstart)
{
stackk.push(nodstart);
while(!stackk.empty())
{
k=stackk.top();
int mar=G[k].size();
if(G[k].size()==0)
{
sol.push_back(k);
stackk.pop();
}
else
{
muchie=G[k].back();
G[k].pop_back();
if(muc[muchie].uz==0)
{
muc[muchie].uz=1;
if(k==muc[muchie].x)
stackk.push(muc[muchie].y);
else
stackk.push(muc[muchie].x);
}
}
}
}
int main()
{
cin>>n>>m;
for(i=1;i<=m;i++)
{
cin>>a>>b;
G[a].push_back(i);
G[b].push_back(i);
muc[i].x=a;
muc[i].y=b;
}
for(i=1;i<=n;i++)
if(G[i].size()%2==1)
break;
if(i<=n)
{
cout<<"-1";
exit(0);
}
euler(1);
int mar=sol.size();
for(i=mar-1;i>=1;i--)
cout<<sol[i]<<" ";
return 0;
}