Pagini recente » Cod sursa (job #1943376) | Statistici Hij Lucian (Gainusa) | Cod sursa (job #1007553) | Cod sursa (job #1567460) | Cod sursa (job #1552001)
#include <cstdio>
#include <stack>
#include <vector>
#include <algorithm>
#define DIM 100010
using namespace std;
int node1, node2;
int nrNodes, nrEdges, ok;
vector <int> Edges[DIM];
stack <int> Stack, Answer;
int main () {
freopen ("ciclueuler.in" ,"r", stdin );
freopen ("ciclueuler.out","w", stdout);
scanf ("%d %d", &nrNodes, &nrEdges);
for (int i = 1; i <= nrEdges; i ++) {
scanf ("%d %d", &node1, &node2);
Edges[node1].push_back(node2);
Edges[node2].push_back(node1);
}
ok = 1;
for (int i = 1; i <= nrNodes; i ++)
if (Edges[i].size()%2)
ok = 0;
if (!ok)
printf ("-1\n");
else {
Stack.push(1);
while (!Stack.empty()) {
int node = Stack.top();
if (Edges[node].size()) {
int nextNode = Edges[node].back();
Stack.push(nextNode);
Edges[node].pop_back();
Edges[nextNode].erase( find(Edges[nextNode].begin(), Edges[nextNode].end(), node) );
} else {
int node = Stack.top();
Answer.push(node);
Stack.pop();
}
}
}
while (Answer.size() != 1) {
int node = Answer.top();
printf ("%d ", node);
Answer.pop();
}
return 0;
}