33 lines
No EOL
1.1 KiB
Python
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")
|
|
|