Pagini recente » Cod sursa (job #1527216) | Cod sursa (job #2135960) | Cod sursa (job #3166241) | Cod sursa (job #1587887) | Cod sursa (job #2672901)
#include <bits/stdc++.h>
using namespace std;
ifstream ci("ciclueuler.in");
ofstream cou("ciclueuler.out");
int st[500005];
int dr[500005];
vector<int>L[500005];
int sol[500005];
bool vis[500005];
int poz[500005];
int n,m,p;
void citire(){
ci>>n>>m;
int a,b;
for(int i=1;i<=m;i++){
ci>>a>>b;
st[i]=a;
dr[i]=b;
L[a].push_back(i);
L[b].push_back(i);
}
}
bool verif(){
for(int i=1;i<=n;i++){
if(L[i].size()%2!=0){
return 0;
}
}
return 1;
}
void Dfs(int nod){
int k;
while(poz[nod]<L[nod].size()){
k=L[nod][poz[nod]++];
if(vis[k]==0){
vis[k]=1;
Dfs(st[k]+dr[k]-nod);
}
}
sol[++p]=nod;
}
void afis(){
for(int i=1;i<=p;i++){
cou<<sol[i]<<" ";
}
}
int main()
{
citire();
if(verif()){
Dfs(1);
afis();
}else{
cou<<"-1";
}
return 0;
}