Pagini recente » Rating Mihai Bololoi (myhayday) | Cod sursa (job #1087882) | Statistici Marius Sandu-Popa (msandupo) | Cod sursa (job #3198089) | Cod sursa (job #1891196)
#include<iostream>
#include<fstream>
#include<vector>
#include<queue>
#define DM 500100
#define DN 100100
using namespace std;
fstream fin("ciclueuler.in",ios::in),fout("ciclueuler.out",ios::out);
queue<int> qu;
vector<int> v[DN];
struct str
{
int a,b,viz;
} much[DM];
int n,m;
void eulerian(int nod)
{
int i,aux,urm;
while(v[nod].size()!=0)
{
aux=v[nod].back();
if(much[aux].viz==1)
{
v[nod].pop_back();
continue;
}
urm=much[aux].a+much[aux].b-nod;
much[aux].viz=1;
eulerian(urm);
}
qu.push(nod);
//cout<<nod<<" ";
}
int main()
{
int a,b,i;
fin>>n>>m;
for(i=1;i<=m;i++)
{
fin>>a>>b;
much[i]={a,b,0};
v[a].push_back(i);
v[b].push_back(i);
}
for(i=1;i<=n;i++)
{
if(v[i].size()%2==1)
{
fout<<"-1\n";
return 0;
}
}
eulerian(1);
while(qu.size()>1)
{
fout<<qu.front()<<" ";
qu.pop();
}
}