Pagini recente » Cod sursa (job #2144913) | Cod sursa (job #194119) | Cod sursa (job #2155603) | Cod sursa (job #2137137) | Cod sursa (job #1979396)
#include <bits/stdc++.h>
#define MMAX 500005
using namespace std;
ifstream si("ciclueuler.in");
ofstream so("ciclueuler.out");
int st[MMAX],dr[MMAX];
bitset<MMAX> viz;
int n,m;
int poz[MMAX];
int sol[MMAX];
vector<int> l[100005];
int lg=0;
void dfs(int nod)
{
while(poz[nod]<l[nod].size())
{
int k=l[nod][poz[nod]++];
if(!viz[k])
{
viz[k]=1;
dfs(st[k]+dr[k]-nod);
}
}
sol[++lg]=nod;
}
int main()
{
si>>n>>m;
for(int i=1;i<=m;++i)
{
si>>st[i]>>dr[i];
l[st[i]].push_back(i);
l[dr[i]].push_back(i);
}
bool ok(true);
for(int i=1;i<=n;++i)
if(l[i].size()&1)
ok=false;
if(!ok)
{
so<<-1<<'\n';
return 0;
}
dfs(1);
for(int i=1;i<=lg;++i)
so<<sol[i]<<' ';
return 0;
}