Pagini recente » Cod sursa (job #2301297) | Cod sursa (job #110584) | Cod sursa (job #3145465) | Cod sursa (job #190378) | Cod sursa (job #2370276)
#include <iostream>
#include <fstream>
#include <vector>
#include <stack>
using namespace std;
ifstream f("ciclueuler.in"); ofstream g("ciclueuler.out");
int n,m;
vector <pair <int,int> > vecini[100005];
bool used[500005];
stack <int> s;
vector <int> sol;
int main() {
int i;
f>>n>>m;
for(i = 1 ; i <= m; ++i) {
int x,y;
f>>x>>y;
vecini[x].push_back({x,i});
vecini[y].push_back({y,i});
}
for(i = 1 ; i <= n; ++i) {
if(vecini[i].size() % 2 == 1) {
g<<-1<<'\n';
return 0;
}
}
s.push(1);
while (!s.empty()) {
int nod = s.top();
if (!vecini[nod].empty()) {
int muchie = vecini[nod].back().second;
int catre = vecini[nod].back().first;
vecini[nod].pop_back();
if(!used[muchie]) {
used[muchie] = 1;
s.push(catre);
}
}
else {
sol.push_back(nod);
s.pop();
}
}
for(i = 0; i < sol.size() - 1; ++i) {
g<<sol[i]<<' ';
}
g<<'\n';
return 0;
}