Pagini recente » Cod sursa (job #3325619) | Cod sursa (job #246188) | Cod sursa (job #1215480) | Cod sursa (job #3311459) | Cod sursa (job #2674119)
#include <fstream>
#include <vector>
using namespace std;
ifstream cin ("ciclueuler.in");
ofstream cout ("ciclueuler.out");
struct ura{
int x, ind;
};
vector <ura> lista[100005];
char muchii[500005];
int sol[500005], cnt;
void euler(int nod)
{
while (lista[nod].size())
{
int x = lista[nod].back().x;
int ind = lista[nod].back().ind;
lista[nod].pop_back();
if (!muchii[ind])
{
muchii[ind] = 1;
euler(x);
}
}
sol[++cnt] = nod;
}
int grad[100005];
int main()
{
int n, m, i;
cin >> n >> m;
for (i = 1; i <= m; i++)
{
int x, y;
cin >> x >> y;
grad[x]++;
grad[y]++;
lista[x].push_back({y, i});
lista[y].push_back({x, i});
}
for (i = 1; i <= n; i++)
if (grad[i] % 2)
{
cout << -1;
return 0;
}
euler(1);
for (i = 1; i < cnt; i++)
cout << sol[i] << " ";
return 0;
}