Caso # | Resultado | Tiempo | Memoria |
---|---|---|---|
#1 |
Correcto
|
0.021 s | 3 KBi |
#2 |
Correcto
|
0.024 s | 3 KBi |
#3 |
Correcto
|
0.022 s | 3 KBi |
#4 |
Correcto
|
0.03 s | 3 KBi |
#5 |
Correcto
|
0.018 s | 3 KBi |
#6 |
Correcto
|
0.024 s | 3 KBi |
#7 |
Correcto
|
0.019 s | 3 KBi |
#8 |
Correcto
|
0.022 s | 3 KBi |
#9 |
Correcto
|
0.022 s | 3 KBi |
#10 |
Correcto
|
0.022 s | 3 KBi |
#11 |
Correcto
|
0.02 s | 3 KBi |
#12 |
Correcto
|
0.029 s | 3 KBi |
#13 |
Correcto
|
0.029 s | 3 KBi |
#14 |
Correcto
|
0.022 s | 3 KBi |
#15 |
Correcto
|
0.026 s | 3 KBi |
#16 |
Correcto
|
0.019 s | 3 KBi |
#17 |
Correcto
|
0.024 s | 3 KBi |
#18 |
Correcto
|
0.026 s | 3 KBi |
#19 |
Correcto
|
0.023 s | 3 KBi |
#20 |
Correcto
|
0.021 s | 3 KBi |
#21 |
Correcto
|
0.023 s | 3 KBi |
#22 |
Correcto
|
0.032 s | 3 KBi |
#23 |
Correcto
|
0.021 s | 3 KBi |
#24 |
Correcto
|
0.022 s | 3 KBi |
#25 |
Correcto
|
0.03 s | 3 KBi |
#26 |
Correcto
|
0.042 s | 8 KBi |
#27 |
Correcto
|
0.378 s | 13 KBi |
#28 |
Correcto
|
0.04 s | 8 KBi |
#29 |
Correcto
|
0.237 s | 13 KBi |
#30 |
Correcto
|
0.064 s | 8 KBi |
#31 |
Correcto
|
0.104 s | 8 KBi |
#32 |
Correcto
|
0.234 s | 13 KBi |
#33 |
Correcto
|
0.074 s | 9 KBi |
#34 |
Incorrecto
|
0.133 s | 9 KBi |
#35 |
Correcto
|
0.353 s | 9 KBi |
graph = {} # Depth First Search def dfs(node): try: if node["visited"] is True: return False if node["explore"] is True: return True node["explore"] = True for edge in node["edges"]: edge = graph[edge] if edge["visited"] is False and dfs(edge) is True: return True node["explore"] = False node["visited"] = True except RecursionError: return False return False def hasCycles(): for node in graph.values(): if node["visited"] is False and dfs(node) is True: return True return False n, m = [int(x) for x in input().split()] for i in range(n): graph[i] = { "edges": set(), "visited": False, "explore": False } for i in range(m): u, v = [int(x) for x in input().split()] graph[u]["edges"].add(v) print("Yes" if hasCycles() else "No")