Pagini recente » Cod sursa (job #2629315) | Cod sursa (job #103901) | Cod sursa (job #355905) | Cod sursa (job #1651455) | Cod sursa (job #729784)
Cod sursa(job #729784)
#include <vector>
#include <queue>
#include <cstdio>
#include <algorithm>
#include <stack>
#define N 100001
using namespace std;
vector<int> graph[N];
vector<int> euler_cycle;
int n;
void euler(int v) {
stack<int> s;
s.push(v);
while (!s.empty()) {
v = s.top();
s.pop();
while (graph[v].size() > 0) {
int w = graph[v].back();
graph[v].pop_back();
vector<int>::iterator it = find(graph[w].begin(), graph[w].end(), v);
graph[w].erase(it);
s.push(w);
v = w;
}
euler_cycle.push_back(v);
}
}
int main() {
freopen("ciclueuler.in", "r", stdin);
//freopen("grader_test10.in", "r", stdin);
freopen("ciclueuler.out", "w", stdout);
int m;
scanf("%d %d", &n, &m);
for (int i = 0; i < m; i++) {
int x, y;
scanf("%d %d ", &x, &y);
graph[x - 1].push_back(y - 1);
graph[y - 1].push_back(x - 1);
}
euler(0);
for (vector<int>::iterator i = euler_cycle.begin() + 1; i != euler_cycle.end(); i++) {
printf("%d ", *i + 1);
}
return 0;
}