Pagini recente » Cod sursa (job #1007534) | Cod sursa (job #2792931) | Cod sursa (job #628982) | Cod sursa (job #1596606) | Cod sursa (job #2735115)
#include <fstream>
#include <vector>
using namespace std;
ifstream cin("ciclueuler.in");
ofstream cout("ciclueuler.out");
struct muchie{
int x,y;
bool anulat;
};
muchie e[500005];
vector <int> a[100005], c;
void euler(int x){
while(!a[x].empty()){
int i=a[x].back();
a[x].pop_back();
if(e[i].anulat) {
continue;
}
int y=e[i].x+e[i].y-x;
e[i].anulat=true;
euler(y);
}
c.push_back(x);
}
bool exista(int n){
for(int i=1;i<=n;i++){
if(a[i].size()%2!=0){
return 0;
}
}
return 1;
}
int main()
{
int n,m;
cin>>n>>m;
for(int i=1;i<=m;i++){
cin>>e[i].x>>e[i].y;
a[e[i].x].push_back(i);
a[e[i].y].push_back(i);
}
if(exista(n)){
euler(1);
for(int i=0;i<c.size()-1;i++){
cout<<c[i]<<" ";
}
}
else{
cout<<-1;
}
return 0;
}