Pagini recente » Cod sursa (job #2050959) | Cod sursa (job #1117269) | Cod sursa (job #555978) | Cod sursa (job #174379) | Cod sursa (job #2822422)
#include <bits/stdc++.h>
using namespace std;
ifstream in("ciclueuler.in");
ofstream out("ciclueuler.out");
int n,m,poz,x,y;
int euler[500005];
int viz[500005];
vector < pair<int,int> > la[100005];
void dfs(int from){
while(la[from].size()){
int to = la[from].back().first;
int nr = la[from].back().second;
la[from].pop_back();
if(viz[nr])
return;
viz[nr] = 1;
dfs(to);
}
euler[++poz] = from;
}
int main()
{
in >> n >> m;
for(int i = 1; i <= m; i++){
in >> x >> y;
la[x].push_back(make_pair(y, i));
la[y].push_back(make_pair(x, i));
}
for(int i = 1; i <= n; i++)
if(la[i].size() % 2 != 0)
{
out << -1;
return 0;
}
dfs(1);
for(int i = 1; i < poz; i++)
out << euler[i] << " ";
return 0;
}