문제 출처
1. 문제설명
2. 알고리즘 설계
- 플로이드-워셜 경로 복원 문제이다.
- 문제의 그래프를 보면 무방향 그래프이다.
- 어떤 두 정점 간 간선이 1개이므로, 중복 처리는 안해도 된다.
next[u][v]
, next[v][u]
를 각각 v
, u
로 처리해야 한다.
- 플로이드 값을 갱신할 때마다
next
배열의 값을 갱신한다.
- 출력 관련
- 기존 코드에서는
cout << (i==j ? '-' : next[i][j])
로 했었다.
- 근데 실제로 출력해보면 ‘-‘에 대한 아스키 코드 숫자가 출력된다.
- 그래서 아래 코드와 같이 if-else로 두 줄의 출력을 만들어줘야 한다.
3. 전체 코드