-

floyd warshall :: 백준 :: 역사 :: 1613 본문

알고리즘/탐색

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이 갱신되고


알고싶은 위치를 읽어서 출력하면 된다.






Comments