Pagini recente » Cod sursa (job #1809549) | Cod sursa (job #2161475) | Cod sursa (job #127465) | Cod sursa (job #1398596) | Cod sursa (job #1166278)
#include <cstdio>
#include <algorithm>
#include <vector>
using namespace std;
int N, M;
vector<int> V[100002];
int D[100002];
int E1[500002], E2[500002];
bool is[500002];
int wh[100002], ST[500002], R[500002];
int main()
{
freopen("ciclueuler.in", "r", stdin);
freopen("ciclueuler.out", "w", stdout);
scanf("%d %d", &N, &M);
for (int i = 1; i <= M; ++i)
{
scanf("%d %d", &E1[i], &E2[i]);
V[E1[i]].push_back(i);
V[E2[i]].push_back(i);
++D[E1[i]];
++D[E2[i]];
}
ST[++ST[0]] = 1;
while (ST[ST[0]])
{
int x = ST[ST[0]];
if (wh[x] < int(V[x].size()))
{
for (; wh[x] < int(V[x].size()); ++wh[x])
if (!is[V[x][wh[x]]])
{
if (E1[V[x][wh[x]]] == x)
ST[++ST[0]] = E2[V[x][wh[x]]];
else
ST[++ST[0]] = E1[V[x][wh[x]]];
is[V[x][wh[x]]] = true;
++wh[x];
break;
}
}
else
{
R[++R[0]] = ST[ST[0]];
--ST[0];
}
}
for (int i = R[0]; i >= 2; --i)
printf("%d ", R[i]);
printf("\n");
}