Pagini recente » Cod sursa (job #1704213) | Cod sursa (job #228190) | Cod sursa (job #1671170) | Cod sursa (job #2784108) | Cod sursa (job #2999679)
#include<fstream>
#include<vector>
using namespace std;
ifstream cin("ciclueuler.in");
ofstream cout("ciclueuler.out");
struct muchie{
int x,y;
bool viz;
}muchii[500005];
int n,m;
vector<int> a[100001];
int st[500005],sol[500005];
int main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
int xx,yy;
cin>>xx>>yy;
muchii[i]={xx,yy};
a[xx].push_back(i);
a[yy].push_back(i);
}
for(int i=1;i<=n;i++){
if(a[i].size()%2!=0){
cout<<-1;
return 0;
}
}
int k=0,nr=0;
st[++k]=1;
while(k>0){
int nod=st[k];
int ok=0;
while(!a[nod].empty()){
int mch=a[nod].back();
a[nod].pop_back();
if(muchii[mch].viz==0){
int vecin;
if(muchii[mch].x!=nod)
vecin=muchii[mch].x;
else
vecin=muchii[mch].y;
st[++k]=vecin;
muchii[mch].viz=1;
ok=1;
break;
}
}
if(!ok)
sol[++nr]=nod,k--;
}
if(nr!=m+1){
cout<<-1;
return 0;
}
for(int i=1;i<nr;i++)
cout<<sol[i]<<" ";
}