[BAKJOON] #1932. 정수 삼각형 (다이나믹 프로그래밍)
BAKJOON #1932. 정수 삼각형 문제를 파헤쳐보자 :)
BAKJOON #10159. 저울 문제를 파헤쳐보자 :)
n = int(input()) # 물건의 수 m = int(input()) # 비교 관계의 수 # 그래프 초기화 graph = [[0] * (n + 1) for _ in range(n + 1)] # 입력 받기 for _ in range(m): a, b = map(int, input().split()) graph[a][b] = 1 # a가 b보다 무겁다 # 플로이드-워셜 for k in range(1, n + 1): # 경유 노드 for i in range(1, n + 1): # 시작 노드 for j in range(1, n + 1): # 도착 노드 if graph[i][k] and graph[k][j]: # i>k, k>j 이면, i>j 이다 graph[i][j] = 1 # 결과 계산 for i in range(1, n + 1): cnt = 0 for j in range(1, n + 1): if i == j: # i가 j보다 무겁지도, 가볍지도 않으면 비교 불가(건너뜀) continue if graph[i][j] == 0 and graph[j][i] == 0: # i>j, j>i 이면, 건수 출력 cnt += 1 print(cnt)
모든 정점 쌍(i, j)에 대해i → j로 가는 최단 경로를 구할 때 사용합니다.