Pagini recente » Cod sursa (job #2738452) | Cod sursa (job #3124250) | Cod sursa (job #313703) | Cod sursa (job #1977426) | Cod sursa (job #2955022)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
#include <stack>
///#include <tryhardmode>
///#include <GODMODE::ON>
using namespace std;
ifstream fin ("ciclueuler.in");
ofstream fout ("ciclueuler.out");
const int NMAX=1e5+5;
const int NMAX1=5e5+5;
vector<int>v[NMAX];
vector<int>total;
stack<int>s;
bool viz[NMAX1];
struct elem{
int x;
int y;
}muchii[NMAX1];
int main()
{
int n,m,i,j,a,b;
fin>>n>>m;
for(i=1;i<=m;i++)
{
fin>>a>>b;
v[a].push_back(i);
v[b].push_back(i);
muchii[i].x=a;
muchii[i].y=b;
}
for(i=1;i<=n;i++)
if(v[i].size()%2==1)
{
fout<<"-1"<<"\n";
exit(0);
}
s.push(1);
while(!s.empty())
{
int p=s.top();
if(!v[p].empty())
{
a=v[p].back();
v[p].pop_back();
if(!viz[a])
{
b=p^muchii[a].x^muchii[a].y;
viz[a]=true;
s.push(b);
}
}
else
{
total.push_back(p);
s.pop();
}
}
total.pop_back();
for(auto i:total)
fout<<i<<" ";
return 0;
}