Pagini recente » Cod sursa (job #1019790) | Cod sursa (job #522793) | Cod sursa (job #2493355) | Cod sursa (job #1564171) | Cod sursa (job #2543962)
#include <bits/stdc++.h>
#define NMAX 500005
using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
int n,m;
vector<int> ma[NMAX];
int from[NMAX];
int to[NMAX];
int viz[NMAX];
void citire()
{
fin>>n>>m;
for(int i=0;i<m;i++)
{
int x,y;
fin>>x>>y;
ma[x].push_back(i);
ma[y].push_back(i);
from[i] = y;
to[i] = x;
}
}
int main()
{
citire();
for(int i=1;i<=n;i++)
{
if(ma[i].size() & 1)
{
fout<<-1;
return 0;
}
}
vector<int> ans,stiva;
stiva.push_back(1);
while(!stiva.empty())
{
int nod = stiva.back();
if(!ma[nod].empty())
{
int e = ma[nod].back();
ma[nod].pop_back();
if(!viz[e])
{
viz[e] = 1;
int r = to[e] ^ from[e] ^ nod;
stiva.push_back(r);
}
}
else
{
stiva.pop_back();
ans.push_back(nod);
}
}
for(int i = 0;i<ans.size();i++)
fout<<ans[i]<<" ";
}