Closed yeahdy closed 4 days ago
=> 노드들의 최단거리를 구해야 함
=> n이 충분히 작으므로 모든 노드에서 다른 모든 노드까지의 최단거리를 구할 수 있는 플로이드와샬
활용
=> O(n^3)
n
: 사건의 개수 <= 400k
: 사건의 전후 관계의 개수 <= 50,000s
: 관계를 알고 싶은 사건 쌍의 수 <= 50,0000
-1
1
이 됨자기 자신으로 가는 길을 0으로 초기화하는 부분을 까먹었네요,,, !!!,,, (이 부분 잊지 말좌,,,)
-1
: 앞섬, 0
: 알 수 없음, 1
: 뒤짐i → j
를 결정하기 위해서 i → p
의 상태와 p → j
의 상태를 이용해서 결정
i → p
와 p → j
가 동일하다면 i → j
도 동일한 상태를 가짐order[i][j]
값은 i, j간의 선후관계를 나타냄
order[i][j]
값이 INF
라면 경로가 없어 모름 (0
)order[i][j]
값이 INF
가 아니라면 경로가 있는 것으로 선후 관계 판단 가능 (i → j (-1), j → i(1))플로이드 와샬이 모든 지점 간의 선후 관계를 구할 수 있는진 오늘 처음 알았네요...!! 와샬이 구현 방법말고 개념도 더 공부해야겠습니당
n(400 이하의 자연수)
s(50,000 이하의 자연수)
플로이드 와샬로 풀이 시 O(n^3)
> 10^6
graph[먼저 일어난 사건][나중에 일어난 사건] = true
그래프 모델링하기
graph[to][k] && graph[k][from]
O(N^3)
구하는 것 : 일부 사건의 전후 관계를 파악(-1, 0, 1)
플로이드-와샬
사용 이유
모든 정점에 대한 경로
를 알고 있음boolean[][] visited
true
처리전후 관계 입력받는 반복문을 N까지 입력 받아서 런타임 오류 에러 발생했었습니다,,ㅎ 문제 조건 잘 보기!