Pagini recente » Cod sursa (job #1381659) | Cod sursa (job #321190) | Cod sursa (job #2133771) | Cod sursa (job #1737712) | Cod sursa (job #1814025)
#include <iostream>
#include <cstdio>
#include <vector>
#define NMAX 100001
#define MMAX 500005
using namespace std;
int n, m, x, y, ok = 1;
vector<int> v[NMAX];
void euler(int nod)
{
while(!v[nod].empty())
{
int w = v[nod].back();
v[nod].pop_back();
int pos = -1;
for(int i = 0; i < v[w].size(); i++)
if(v[w][i] == nod)
pos = i;
if(pos != -1)
v[w].erase(v[w].begin() + pos);
euler(w);
}
printf("%d ", nod);
}
int main()
{
freopen( "ciclueuler.in", "r", stdin);
freopen("ciclueuler.out", "w", stdout);
scanf("%d %d\n", &n, &m);
for(int i = 0; i < m; i++)
{
scanf("%d %d\n", &x, &y);
v[x].push_back(y);
v[y].push_back(x);
}
for(int i = 1; i <= n; i++)
if(v[i].size() % 2 == 1)
{
printf("-1");
ok = 0;
break;
}
if(ok)
euler(1);
return 0;
}