문제
해결 방법
플로이드 와샬을 사용하는 기본적인 문제이다.
입력에서 주어진 값들을 해당 하는 배열에 넣고,
플로이드 와샬 알고리즘을 이용해서 정점 i에서 k를 들렸다가 j로 갈 수 있는 경로를 찾아서
배열에 입력해준 뒤에 출력하면 된다.
코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int[][] map = new int[N][N];
StringTokenizer st;
for (int i = 0; i < N; i++) {
st = new StringTokenizer(br.readLine(), " ");
for (int j = 0; j < N; j++) {
int temp = Integer.parseInt(st.nextToken());
if (temp == 1) {
map[i][j] = 1;
} else {
map[i][j] = 0;
}
}
}
for (int k = 0; k < N; k++) {
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
if (map[i][j] == 0) {
if (map[i][k] == 1 && map[k][j] == 1) {
map[i][j] = 1;
}
}
}
}
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
sb.append(map[i][j] + " ");
}
sb.append("\n");
}
System.out.println(sb);
}
}
'Algorithm > BaekJoon' 카테고리의 다른 글
[JAVA] 백준 3109 : 빵집 (0) | 2021.04.12 |
---|---|
[JAVA] 백준 6549 : 히스토그램에서 가장 큰 직사각형 (0) | 2021.04.09 |
[JAVA] 백준 11779 : 최소비용 구하기 2 (0) | 2021.04.05 |
[JAVA] 백준 4485 : 녹색 옷 입은 애가 젤다지? (0) | 2021.04.02 |
[JAVA] 백준 1261 : 알고스팟 (0) | 2021.04.02 |