Pagini recente » Cod sursa (job #1136481) | Cod sursa (job #1701980) | Cod sursa (job #1765353) | Cod sursa (job #2371369) | Cod sursa (job #1814036)
#include <bits/stdc++.h>
using namespace std;
const int nmax = 1e5 + 10;
int n, m;
vector < int > ans, g[nmax];
void input() {
scanf("%d %d", &n, &m);
for (int i = 1; i <= m; ++i) {
int x, y;
scanf("%d %d", &x, &y);
g[x].push_back(y);
g[y].push_back(x);
}
}
void solve() {
stack < int > s; s.push(1);
while ((int)s.size()) {
int node = s.top();
if ((int)g[node].size() == 0)
s.pop(), ans.push_back(node);
else {
int to = g[node].back();
s.push(to);
g[node].pop_back();
for (int i = 0; i < (int)g[to].size(); ++i)
if (g[to][i] == node) {
g[to].erase(g[to].begin()+i);
break;
}
}
}
ans.pop_back();
}
void output() {
for (auto &it : ans) printf("%d ", it);
}
int main()
{
freopen("ciclueuler.in","r",stdin);
freopen("ciclueuler.out","w",stdout);
input();
solve();
output();
return 0;
}