λ¬Έμ
λ°±μ€ μ¨λΌμΈ μ μ§ - 1613λ²
νμ΄ κ³Όμ
μμ¬μ ν μ§μ μ κ·Έλνμ μ μ μΌλ‘ λνλ΄λ©΄ κ° μ¬κ±΄μ μ ν κ΄κ³λ μ μ μ λλ¬μ± λ¬Έμ λ‘ μκ°ν μ μμ΅λλ€.
λ°λΌμ μ μ μ μ΅λ κ°μκ° 400κ° μ΄νμ΄λ―λ‘ O(N^3)
μ μκ°λ³΅μ‘λλ₯Ό κ°μ§λ νλ‘μ΄λ μμ¬ μκ³ λ¦¬μ¦
μ νμ©νμ¬ λ¬Έμ λ₯Ό ν΄κ²°νμ΅λλ€.
λͺ¨λ μ μ κ°μ λλ¬μ± μ¬λΆλ₯Ό κ³μ°ν΄μ€ λ€, λ¬Έμ μμ μ£Όμ΄μ§λ μ
λ ₯μ μ ν κ΄κ³λ₯Ό μΆλ ₯ν΄μ£Όλλ‘ νμ΅λλ€.
λ€λ§ Python3 μ μλ νκ³λ‘ μΈν΄ PyPyλ‘ μ μΆν΄μΌ μκ°μ ν μ΄λ΄μ μνμ΄ κ°λ₯νμ΅λλ€.
μ½λ
import sys
n, k = list(map(int, sys.stdin.readline().split()))
adj = [[0]*n for _ in range(n)]
for _ in range(k):
frm, to = list(map(int, sys.stdin.readline().split()))
adj[frm-1][to-1] = 1
s = int(input())
event = []
for _ in range(s):
line = list(map(int, sys.stdin.readline().split()))
event.append(line)
def floyd():
global adj
for k in range(n):
for u in range(n):
for v in range(n):
adj[u][v] = adj[u][v] or (adj[u][k] and adj[k][v])
def solution():
floyd()
for e in event:
if adj[e[0]-1][e[1]-1]:
print(-1)
elif adj[e[1]-1][e[0]-1]:
print(1)
else:
print(0)
solution()
λ°μν
'π algorithm > boj' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
BOJ 5568 - μΉ΄λ λκΈ° (0) | 2021.06.14 |
---|---|
BOJ 5972 - νλ°° λ°°μ‘ (0) | 2021.06.10 |
BOJ 5014 - μ€ννΈλ§ν¬ (0) | 2021.06.09 |
BOJ 1389 - μΌλΉ λ² μ΄μ»¨μ 6λ¨κ³ λ²μΉ (0) | 2021.06.09 |
BOJ 2644 - μ΄μκ³μ° (0) | 2021.06.09 |
π¬ λκΈ