Pagini recente » moisil2012 | Cod sursa (job #683531) | Cod sursa (job #385951) | Cod sursa (job #2736730) | Cod sursa (job #2813741)
#include <iostream>
#include <fstream>
#include <vector>
#include <map>
using namespace std;
ifstream in("ciclueuler.in");
ofstream out("ciclueuler.out");
vector <pair<int,int> > v[100002];
int a[500001];
int r[500001];
int g[500001];
int n,m;
int p;
void Euler(int k){
while(!v[k].empty()){
int x=v[k].back().first;
int y=v[k].back().second;
v[k].pop_back();
if(a[y]==0)
{
a[y]=1;
Euler(x);
}
}
r[++p] = k;
}
int main(){
in >> n >> m;
for(int i=1;i<=m;i++){
int x,y;
in >> x >> y;
g[x]++;
g[y]++;
v[x].push_back({y,i});
v[y].push_back({x,i});
}
for(int i=1;i<=n;i++)
{
if(g[i]%2==1){
out << -1;
return 0;
}
}
Euler(1);
for(int i=1;i<=p;i++){
out << r[i] << " ";
}
return 0;
}