Pagini recente » Cod sursa (job #489540) | Cod sursa (job #1794567) | Cod sursa (job #2254766) | Cod sursa (job #1292430) | Cod sursa (job #2760949)
#include <bits/stdc++.h>
#define nmax 100001
#define mmax 500001
using namespace std;
ifstream in("ciclueuler.in");
ofstream out("ciclueuler.out");
bool viz[mmax];
int from[mmax],to[mmax];
vector<int> graf[nmax];
int main(){
int n,m;
in>>n>>m;
for(int i=1;i<=m;i++){
int x,y;
in>>x>>y;
graf[x].push_back(i);
graf[y].push_back(i);
from[i]=x;
to[i]=y;
}
for(int i=1;i<=n;i++){
if(graf[i].size()&1){
out<<-1;
return 0;
}
}
vector<int> ans;
stack<int> s;
s.push(1);
while(!s.empty()){
int nod=s.top();
if(!graf[nod].empty()){
int e=graf[nod].back();
graf[nod].pop_back();
if(!viz[e]){
viz[e]=1;
int x= from[e]^to[e]^nod;
s.push(x);
}
}else{
s.pop();
ans.push_back(nod);
}
}
for(int i=0;i<ans.size()-1;i++){
out<<ans[i]<<' ';
}
}