Pagini recente » Cod sursa (job #613746) | Cod sursa (job #539049) | Cod sursa (job #723631) | Cod sursa (job #1295679) | Cod sursa (job #2696776)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
#define mmax 500005
#define nmax 500005
int a[mmax], b[mmax],sol[500001],nr;
vector <int> G[nmax];
bool viz[nmax];
void euler(int x) {
int current, urm;
while (G[x].size() != 0) {
current = G[x].back();
G[x].pop_back();
if (viz[current] == 0) {
viz[current] = 1;
if (a[current] == x)
urm = b[current];
else
urm = a[current];
euler(urm);
}
}
sol[++nr] = x;
}
int main()
{
int st, n, m;
fin >> n >> m;
for (int i = 1; i <= m; i++) {
cin >> a[i] >> b[i];
G[a[i]].push_back(i);
G[b[i]].push_back(i);
}
st = 0;
for (int i = 1; i <= n; i++)
if ((G[i].size() % 2) == 1)
st = 1;
if (st == 1)
cout << -1;
else {
euler(1);
int r;
for (r = 1; r < nr; r++)
cout << sol[r] << " ";
}
return 0;
}