Pagini recente » Cod sursa (job #2113497) | Cod sursa (job #1023287) | Cod sursa (job #2835384) | Cod sursa (job #1963851) | Cod sursa (job #2127199)
#include <fstream>
#include <vector>
#include <stack>
using namespace std;
struct muchie{
int to, cod;
};
int n, m, c;
vector<muchie> L[100000];
bool viz[100000], ales[500000];
bool gradPar(){
for (int i=0; i<n; i++)
if (L[i].size() %2 ==1)
return false;
return true;
}
int main(){
fstream f ("ciclueuler.in", ios_base::in);
f >> n >> m;
for (int i=0; i<m; i++){
int x, y;
f >> x >> y;
x--; y--;
L[x].push_back({y, c});
L[y].push_back({x, c++});
}
f.close();
f.open("ciclueuler.out", ios_base::out);
if (!gradPar())
f << -1;
else{
stack<int> S;
int r;
size_t q;
S.push(0);
while (!S.empty()){
r=S.top(); S.pop();
q=0;
while (q<L[r].size() && ales[L[r][q].cod]) q++;
if (q!=L[r].size()){
ales[L[r][q].cod]=true;
S.push(r);
S.push(L[r][q].to);
}
else
f << r+1 << ' ';
}
}
f.close();
return 0;
}