Pagini recente » Cod sursa (job #2261207) | Cod sursa (job #1541842) | Cod sursa (job #3191597) | Cod sursa (job #1608468) | Cod sursa (job #1410504)
#include <bits/stdc++.h>
#define pb push_back
#define N 100005
using namespace std;
vector<int>v[N], q;
bitset<N>viz;
int n, m, x, y, i, nod, vec;
void df(int nod)
{
if(viz[nod])
return;
viz[nod] = 1;
for(auto it : v[nod])
df(it);
}
int main()
{
freopen("ciclueuler.in", "r", stdin);
freopen("ciclueuler.out", "w", stdout);
scanf("%d%d", &n, &m);
for(; m; m--)
{
scanf("%d%d", &x, &y);
v[x].pb(y);
v[y].pb(x);
}
for(i = 1; i <= n; i++)
if(v[i].size() & 1)
{
printf("-1");
return 0;
}
df(1);
for(i = 1; i <= n; i++)
if(!viz[i])
{
printf("-1");
return 0;
}
q.pb(1);
while(q.size())
{
nod = q.back();
if(v[nod].size())
{
vec = v[nod].back();
q.pb(vec);
v[nod].pop_back();
for(auto&it : v[vec])
if(it == nod)
{
it = v[vec].back();
v[vec].pop_back();
break;
}
}
else
{
q.pop_back();
printf("%d ", nod);
}
}
return 0;
}