Pagini recente » Cod sursa (job #1222604) | Cod sursa (job #2437164) | Cod sursa (job #40467) | Cod sursa (job #2365819) | Cod sursa (job #1567619)
#include <bits/stdc++.h>
using namespace std;
int n, m;
vector <int> graf[100005], rez;
void euler(int start)
{
vector <int> stiva;
vector <int>::iterator it;
stiva.push_back(start);
while (!stiva.empty())
{
int nod = stiva.back();
if (graf[nod].empty())
{
stiva.pop_back();
rez.push_back(nod);
continue;
}
stiva.push_back(graf[nod].back());
int nod1 = graf[nod].back();
graf[nod].pop_back();
for (it = graf[nod1].begin(); it != graf[nod1].end(); it++)
if (*it == nod)
{*it = graf[nod1].back(); graf[nod1].pop_back(); break;}
}
}
int main()
{
freopen("ciclueuler.in", "r", stdin);
freopen("ciclueuler.out", "w", stdout);
scanf("%d %d", &n, &m);
for (int i = 1, a, b; i <= n; i++)
scanf("%d %d", &a, &b),
graf[a].push_back(b),
graf[b].push_back(a);
euler(1);
rez.pop_back();
for (const auto &it : rez)
printf("%d ", it);
}