Pagini recente » Cod sursa (job #1495072) | Istoria paginii runda/cnrv_2 | Cod sursa (job #2131412) | Cod sursa (job #449279) | Cod sursa (job #1752815)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
#include <stack>
using namespace std;
ifstream in("ciclueuler.in");
ofstream out("ciclueuler.out");
int n,m,st=0,a[500010];
vector<int> v[100005];
stack<int> eul;
int main()
{
int i,j,x,y;
in>>n>>m;
for(int k=0;k<m;k++){
in>>i>>j;
v[i].push_back(j);
v[j].push_back(i);
}
int imp=0;
for(i=1;i<=n;i++)
if(v[i].size()%2 != 0){
imp=1;
break;
}
if(imp)
out<<-1;
else{
eul.push(1);
while(!eul.empty()){
x=eul.top();
if(v[x].size()){
y=v[x].back();
v[x].pop_back();
v[y].erase(find(v[y].begin(),v[y].end(),x));
eul.push(y);
}
else{
a[st++]=x;
eul.pop();
}
}
}
for(int i=0;i<st-1;i++)
out<<a[i]<<" ";
in.close();
out.close();
return 0;
}