#include #include #define MAXN 1111111 using namespace std; int N, M, k; vector G[MAXN]; int used[MAXN]; //kdy byl vrchol zarazen do v? int v[MAXN]; int r; int main() { scanf("%d%d%d", &N, &M, &k); //nacteni grafu - vrcholy cislujeme od 0 do N-1 for (int i = 0; i < M; i++) { int u, v; scanf("%d%d", &u, &v); G[u].push_back(v); G[v].push_back(u); } //sestrojeni posloupnosti v_1,...,v_r used[0] = 1; v[1] = 0; r = 1; for (int i = 1; i <= r; i++) { for (int j = 0; j < (int) G[v[i]].size(); j++) { if (used[G[v[i]][j]] == 0) { used[G[v[i]][j]] = r + 1; v[++r] = G[v[i]][j]; break; } } } //nalezeni indexu s a vypsani kruznice int s; for (int j = 0; j < (int) G[v[r]].size(); j++) if (used[G[v[r]][j]] <= r - k) s = used[G[v[r]][j]]; for (int i = s; i <= r; i++) printf("%d%s", v[i], (i < r) ? " " : "\n"); return 0; }