Pagini recente » Cod sursa (job #1108053) | Cod sursa (job #760050) | Cod sursa (job #556931) | Cod sursa (job #2274589) | Cod sursa (job #2701751)
#include <bits/stdc++.h>
#define NMAX 100005
#define infile "ciclueuler.in"
#define outfile "ciclueuler.out"
using namespace std;
vector<int> G[NMAX], rez;
stack<int> s;
bool fin[5 * NMAX];
int n, m, x, y;
int dela[5 * NMAX], pana[5 * NMAX];
int main()
{
freopen(infile, "r", stdin);
freopen(outfile, "w", stdout);
scanf("%d %d", &n, &m);
for (int i = 0; i < m; ++i)
{
scanf("%d %d", &x, &y);
G[x].push_back(i);
G[y].push_back(i);
dela[i] = x;
pana[i] = y;
}
for (int i = 0; i < n; i++)
{
if (G[i].size() % 2 != 0)
{
printf("-1");
return 0;
}
}
s.push(1);
while (!s.empty())
{
int w = s.top();
if (!G[w].empty())
{
int e = G[w].back();
G[w].pop_back();
if (!fin[e])
{
fin[e] = 1;
s.push(dela[e] ^ pana[e] ^ w);
}
} else
{
s.pop();
rez.push_back(w);
}
}
for (int i = 0; i < rez.size() - 1; ++i)
{
printf("%d ", rez[i]);
}
fclose(stdin);
fclose(stdout);
return 0;
}