Pagini recente » Cod sursa (job #1498858) | Cod sursa (job #1217697) | Cod sursa (job #1382717) | Cod sursa (job #1533529) | Cod sursa (job #2865611)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
const int nmax = 500005;
int n, m, A[nmax], B[nmax], E[nmax], viz[nmax], nrm, cnt;
vector<int>V[nmax];
void DFS(int nod)
{
for(unsigned int x = 0;x < V[nod].size();x++)
{
int y = V[nod][x];
V[nod].erase(V[nod].begin() + x);
DFS(A[y] + B[y] - nod);
}
E[++cnt] = nod;
}
void Citire()
{
int x, y, i;
fin >> n >> m;
for(i = 1;i <= m;i++)
{
fin >> x >> y;
nrm++;
A[nrm] = x;
B[nrm] = y;
V[x].push_back(nrm);
V[y].push_back(nrm);
}
}
int viz1[100005];
void Solve()
{
int i;
for(i = 1;i <= n;i++)
if(V[i].size() % 2 == 1)
{
fout << "-1";
return;
}
DFS(1);
for(i = 1;i < cnt;i++)
fout << E[i] << " ";
}
int main()
{
Citire();
Solve();
return 0;
}