practivceAlgorithm/백준
[백준][Python] 1613 역사
findTheValue
2021. 10. 7. 02:33
순서대로 방문하는 문제같은 경우 플로이드 워셜을 많이 쓴다.
최초 1을 써놓고 플로이드 워셜을 통해 갈 수 있는 지점들을 하나하나 1로 바꾸어 주는 전략.
import sys
input = sys.stdin.readline
n, k = map(int, input().split())
matrix = [[0] * n for __ in range(n)]
for __ in range(k):
a, b = map(lambda x : int(x) - 1, input().split())
matrix[a][b] = 1
for k in range(n):
for i in range(n):
for j in range(n):
if matrix[i][k] and matrix[k][j]:
matrix[i][j] = 1
for __ in range(int(input())):
a, b = map(lambda x : int(x) - 1, input().split())
if matrix[a][b]:
print(-1)
elif matrix[b][a]:
print(1)
else:
print(0)