Pagini recente » Cod sursa (job #2040868) | Cod sursa (job #791305) | Cod sursa (job #783768) | Cod sursa (job #2261296) | Cod sursa (job #2156772)
//#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream f("ciclueuler.in");
ofstream cout("ciclueuler.out");
const int N=100005;
const int M=500005;
int n, m, viz[M], q[M], k, sol[M];
vector <pair <int, int> > a[N];
void dfs(int i)
{
int j, v;
while (!a[i].empty())
{
j=a[i].back().second;
v=a[i].back().first;
a[i].pop_back();
if (!viz[j])
{
viz[j]=1;
dfs(a[i].back().first);
}
}
k++;
sol[k]=i;
}
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=1; i<=k; i++) cout<<sol[i]<<" ";
return 0;
}