b_역사_1613
| source | www.acmicpc.net/problem/1613%C2%A0 |
| type | 📌 개발노트 |
| topics | 600-알고리즘 & 코딩테스트 614 그래프 |
| types | 문제풀이 |
| 정답여부 | 성공 |
생각
모순이 없다 == 사이클이 없다로 이해.
그러면 위상정렬을 써도 되는것아닌가 ?
ㄴㄴ 안됨 이처럼 쪼개질시 쪼개진 노드끼리는 서순을 구분할 수 없음

아래 코드 1번파트에서 한방향 말고 좌우 방향 다 고려해야하는것아니냐?
사실 이 절반만 계산한다면 양방향체크해야하는게맞는데 여기서는걍 다체크해서 상관없음.
bfs 냐 걍 dfs 쓰면되는거아님?
맞음 근데 문제가 많아질수록 계속 처음부터구해야해서 복잡도가 늘어날것임.
import sys
import math
n,m = map(int, sys.stdin.readline().split())
arr = [[0]*(n+1) for _ in range(n+1)]
for _ in range(m):
[a,b]=list(map(int, sys.stdin.readline().split()))
arr[a][b]=-1
arr[b][a]=1
for i in range(1,n+1):
# <span id="중간-간선-선정"></span>중간 간선 선정
for j in range(1,n+1):
for k in range(1,n+1):
# 돌면서 중간 간선을 일방향 통행으로 되는것을 고름
if(arr[j][i] == -1 and arr[i][k] == -1): # 1번파트
arr[j][k]=-1
arr[k][j]=1
z = int(sys.stdin.readline().strip())
question = [list(map(int, sys.stdin.readline().split())) for _ in range(z)]
for i in question:
[a,b]=i
print(arr[a][b])