Pagini recente » Cod sursa (job #350581) | Cod sursa (job #146382) | Cod sursa (job #2831730) | Cod sursa (job #2539613) | Cod sursa (job #2123783)
#include <bits/stdc++.h>
using namespace std;
int const NMAX=100000;
int const MMAX=500000;
ifstream in("ciclueuler.in");
ofstream out("ciclueuler.out");
struct comb{
int n, poz;
};
bitset<MMAX> viz;
vector <comb> nodes[NMAX+1];
vector <int> sol;
stack <int> stiva;
int main(){
int n, m, n1, n2, i;
in >> n >> m;
for (i=1; i<=m; i++){
in >> n1 >> n2;
nodes[n1].push_back({n2, i});
nodes[n2].push_back({n1, i});
}
for (i=1; i<=n; i++)
if (nodes[i].size()&1){
out << -1;
return 0;
}
stiva.push(1);
while(!stiva.empty()){
int nod = stiva.top();
if (!nodes[nod].empty()){
comb fiu = nodes[nod].back();
if (viz[fiu.poz]){
nodes[nod].pop_back();
continue;
}
stiva.push(fiu.n);
nodes[nod].pop_back();
viz[fiu.poz]=true;
}
else{
sol.push_back(stiva.top());
stiva.pop();
}
}
sol.pop_back();
for (auto x : sol)
out << x << ' ';
}