Pagini recente » Cod sursa (job #2586673) | Cod sursa (job #728395) | Cod sursa (job #234287) | Cod sursa (job #2381411) | Cod sursa (job #343276)
Cod sursa(job #343276)
#include <cstdio>
#include <vector>
#define maxn 100100
using namespace std;
int n, m, a, b, i, j;
vector <int> g[maxn], muc[maxn];
bool vizm[5 * maxn];
int grad[maxn], viz[maxn];
void df(int nod) {
int i;
for (i = 0; i < g[nod].size(); i++) {
if (!vizm[muc[nod][i]]) {
vizm[muc[nod][i]] = 1;
df(g[nod][i]);
printf("%d ", nod);
}
}
}
void dfs(int nod) {
int i;
if (viz[nod])
return;
viz[nod] = 1;
for (i = 0; i < g[nod].size(); i++)
dfs(g[nod][i]);
}
int main() {
freopen("ciclueuler.in", "r", stdin);
freopen("ciclueuler.out", "w", stdout);
scanf("%d%d", &n, &m);
for (i = 1; i <= m; i++) {
scanf("%d%d", &a, &b);
g[a].push_back(b);
g[b].push_back(a);
muc[a].push_back(i);
muc[b].push_back(i);
grad[a]++; grad[b]++;
}
for (i = 1; i <= n; i++)
if (grad[i] % 2 == 1) {
printf("-1\n");
return 0;
}
dfs(1);
for (i = 1; i <= n; i++)
if (viz[i] == 0) {
printf("-1\n");
return 0;
}
df(1);
return 0;
}