Pagini recente » Cod sursa (job #2813132) | Cod sursa (job #2497471) | Cod sursa (job #3151723) | Cod sursa (job #526375) | Cod sursa (job #1932169)
#include <fstream>
#include <vector>
using namespace std;
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
vector <int> A[100001];
bool viz[500001];
int n, m;
struct MUCHIE{
int x, y;
}M[500001];
int main()
{
int i, j, x, y, nod, e;
f >> n >> m;
for( i = 1; i <= m; i++ ){
f >> x >> y;
A[x].push_back(i);
A[y].push_back(i);
M[i].x = x;
M[i].y = y;
}
for(i = 1; i <= n; i++)
if(A[i].size()%2 == 1){
g << "-1";
return 0;
}
vector <int> stk;
vector <int> ans;
stk.push_back(1);
while(!stk.empty()){
nod = stk.back();
if(!A[nod].empty()){
e = A[nod].back();
A[nod].pop_back();
if(!viz[e]){
viz[e] = true;
stk.push_back(M[e].x^M[e].y^nod);
}
}
else{
ans.push_back(nod);
stk.pop_back();
}
}
for(i = 0; i < ans.size() - 1; i++)
g << ans[i] << " ";
return 0;
}