Pagini recente » Cod sursa (job #3293511) | Cod sursa (job #370174) | Cod sursa (job #1231204) | Cod sursa (job #3182907) | Cod sursa (job #2323225)
#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
#define NMAX 100010
#define MMAX 500010
using namespace std;
int n, m, sterse;
vector<int> v[NMAX];
int stiv[MMAX], st;
void citire()
{
scanf("%d %d", &n, &m);
int t1, t2;
for (int i = 1; i <= m; i++)
{
scanf("%d %d", &t1, &t2);
v[t1].push_back(t2);
v[t2].push_back(t1);
}
}
void euler()
{
for (int i = 1; i <= n; i++)
if (v[i].size()%2)
{
printf("-1");
return;
}
stiv[++st] = 1;
while (st > 0)
{
int top = stiv[st];
if (v[top].size() == 0)
{
printf("%d ", top);
st--;
}
else {
int next = v[top].back();
v[top].pop_back();
sterse++;
v[next].erase(std::find(v[next].begin(), v[next].end(), top));
stiv[++st] = next;
}
}
if (sterse != m)
{
printf("-1");
return ;
}
}
int main()
{
freopen("ciclueuler.in", "r", stdin);
freopen("ciclueuler.out", "w", stdout);
citire();
euler();
return 0;
}