Pagini recente » Cod sursa (job #1154067) | Cod sursa (job #1345974) | Cod sursa (job #2815568) | Cod sursa (job #1998859) | Cod sursa (job #2156744)
//#include <iostream>
#include <fstream>
#include <vector>
// cu Fleury flurry
using namespace std;
ifstream f("ciclueuler.in");
ofstream cout("ciclueuler.out");
const int N=100005;
const int M=500005;
int n, m, viz[M];
vector <pair <int, int> > a[N];
vector <int> q, v;
void dfs(int i)
{
int u;
q.push_back(i);
while (!q.empty())
{
u=q.back();
if (!a[u].empty())
{
pair <int , int> w;
w=a[u].back();
a[u].pop_back();
if (!viz[w.second])
{
viz[w.second]=1;
q.push_back(w.first);
}
}
else
{
q.pop_back();
v.push_back(u);
}
}
}
int main()
{
int i, x, y;
f>>n>>m;
for (i=1; i<=m; i++)
{
f>>x>>y;
a[x].push_back(make_pair(y, i));
a[y].push_back(make_pair(x, i));
}
// verific daca are gradul par
for (i=1; i<=n; i++)
if (a[i].size() % 2 == 1) { cout<<-1; return 0; }
dfs(1);
for (i=0; i<v.size()-1; i++) cout<<v[i]<<" ";
return 0;
}