알고리즘/탐색
floyd warshall :: 백준 :: 역사 :: 1613
lingi04
2016. 11. 28. 13:28
[문제 풀이]
첫 줄에 있는 사건의 개수 n과 전후관계 개수 k을 입력받는다.
map[n][n] 배열을 생성한 후
전후관계 k개(row, col 형태)를 입력받는데
map[row][col] = -1
map[col][row] = 1
이렇게 설정한다.
예제로 입력된 정보를 토대로 맵을 생성해보면
| -1 | -1 |
|
|
1 |
| -1 | -1 |
|
1 | 1 |
| -1 |
|
| 1 | 1 |
|
|
|
|
|
|
|
이런 형태의 맵이 나오게 된다.
이 상태에서 플로이드 와샬 알고리즘을 사용하여 완전탐색을 하면 된다.
if(map[row][k] != 0 && map[row][k] == map[l][col]){
map[row][col] = map[row][k];
}
0 | -1 | -1 | -1 | 0 |
1 | 0 | -1 | -1 | 0 |
1 | 1 | 0 | -1 | 0 |
1 | 1 | 1 | 0 | 0 |
0 | 0 | 0 | 0 | 0 |
탐색결과 위와 같은 형태로 map이 갱신되고
알고싶은 위치를 읽어서 출력하면 된다.