Pagini recente » Cod sursa (job #2465628) | Cod sursa (job #711375) | Cod sursa (job #208751) | Cod sursa (job #2050784) | Cod sursa (job #2366525)
#include <bits/stdc++.h>
using namespace std;
ifstream in("ciclueuler.in");
ofstream out("ciclueuler.out");
int n,m;
const int Maxn=100005;
const int Maxm=500005;
vector < int >v[Maxn],sol; stack < int >s;
struct {int x,y,viz;}muc[Maxm];
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=x; muc[i].y=y; muc[i].viz=0;
}
}
bool euler()
{
for(int i=1;i<=n;i++)
if(v[i].size()%2)
return 0;
return 1;
}
void solve()
{
s.push(1);
while(!s.empty())
{
int nod=s.top();
if(!v[nod].empty())
{
int ind=v[nod].back();
v[nod].pop_back();
if(muc[ind].viz==0)
{
muc[ind].viz=1;
if(nod==muc[ind].x)
s.push(muc[ind].y);
else
s.push(muc[ind].x);
}
}
else
{
sol.push_back(nod);
s.pop();
}
}
}
int main()
{
citire();
if(!euler())
out<<-1;
else
{
solve();
for(int i=0;i<sol.size()-1;i++)
out<<sol[i]<<" ";
}
}