Pagini recente » Cod sursa (job #2808249) | Cod sursa (job #2618755) | Cod sursa (job #2975178) | Cod sursa (job #852427) | Cod sursa (job #2573572)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
const int nmax = 100005;
int n, m;
vector <pair <int, int> > g[nmax];
vector <int> sol;
int viz[500005];
inline void dfs(int nod)
{
while (g[nod].size())
{
int vecin = g[nod].back().first;
int ind = g[nod].back().second;
g[nod].pop_back();
if (viz[ind])
continue;
viz[ind] = 1;
dfs(vecin);
}
sol.push_back(nod);
}
int main()
{
fin >> n >> m;
for (int i = 1; i <= m; i++)
{
int a, b;
fin >> a >> b;
g[a].push_back({b, i});
g[b].push_back({a, i});
}
int ok = 1;
for (int i = 1; i <= n; ++i)
if (g[i].size() % 2 == 1)
ok == 0;
if (!ok)
return fout << -1, 0;
dfs(1);
for (unsigned int i = 0; i <sol.size() - 1; i++)
fout << sol[i] << " ";
return 0;
}