test/1C.py
2026-07-01 19:46:51 +03:00

33 lines
No EOL
1.1 KiB
Python

N, M = map(int, input().split())
adj = [[] for i in range(N+1)]
for i in range(M):
u, v = map(int, input().split())
adj[u].append(v)
color = [0]*(N+1) # 0-нет цвета, 1 - обработка, 2 - отмечена и мы закончили
parent = [0]*(N+1)
for i in range(1, N+1):
if color[i] == 0:
stack = [i]
while stack:
u = stack.pop()
if color[u] == 0:
color[u] = 1
stack.append(u)
for v in adj[u]:
if color[v] == 0:
stack.append(v)
parent[v] = u
elif color[v] == 1 :
cycle = [v]
curr = u
while curr != v:
cycle.append(curr)
curr = parent[curr]
print(len(cycle))
print(*(cycle[::-1]))
exit()
elif color[u] == 1:
color[u] = 2
print("-1")