Pagini recente » Cod sursa (job #1336745) | Cod sursa (job #1330651) | hc_round10 | Istoria paginii utilizator/irina_barbu29 | Cod sursa (job #2331292)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
int n, m, i, a, b, s[500001], nod, vecin, d[100001], f[500001], k;
vector<pair<int, int> > v[100001];
int main(){
fin>>n>>m;
for(i=1;i<=m;i++){
fin>>a>>b;
v[a].push_back({b, i});
v[b].push_back({a, i});
d[a]++, d[b]++;
}
for(i=1;i<=n;i++)
if(d[i] % 2 == 1){
fout<<-1;
return 0;
}
s[k = 1] = 1;
while(k){
nod = s[k];
if(d[nod] == 0){
if(k>1)
fout<<nod<<" ";
k--;
continue;
}
while(f[v[nod].back().second] == 1)
v[nod].pop_back();
vecin = v[nod].back().first;
f[v[nod].back().second] = 1;
d[vecin]--, d[nod]--;
v[nod].pop_back();
s[++k] = vecin;
}
return 0;
}