Pagini recente » Cod sursa (job #1755350) | Cod sursa (job #987551) | Cod sursa (job #897719) | Cod sursa (job #1618269) | Cod sursa (job #2331852)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
int n,m,x,y,d[500010],k=1,f[500010];
vector <pair<int,int>> a[100010];
//queue <int> coada;
int coada[500010];
int main(){
fin>>n>>m;
for(int i=1;i<=m;i++){
fin>>x>>y;
a[x].push_back(make_pair(y,i));
a[y].push_back(make_pair(x,i));
d[x]++;
d[y]++;
}
for(int i=1;i<=n;i++)
if(d[i]%2==1){
fout<<-1;
return 0;
}
coada[k]=1;
while(k>0){
int nod=coada[k];
if(d[nod]==0){
if(k>1)
fout<<nod<<" ";
// coada.pop();
k--;
continue;
}
else{
while(f[a[nod].back().second]==1){
a[nod].pop_back();
}
int vecin=a[nod].back().first;
d[nod]--;
d[vecin]--;
f[a[nod].back().second]=1;
a[nod].pop_back();
k++;
coada[k]=vecin;
// coada.push(vecin);
}
}
return 0;
}