사용 알고리즘: 플로이드-워셜
사용 언어: JAVA
import java.util.*;
import java.io.*;
public class Main_11403_findPath {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[][] graph = new int[n][n];
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
graph[i][j] = sc.nextInt();
}
}
for(int i=0; i<n; i++) {
for(int j=0; j<n; j++) {
for(int k=0; k<n; k++) {
if(graph[i][k]==1 && graph[k][j]==1) {
graph[i][j] = 1;
}
}
}
}
for(int i=0; i<n; i++) {
for(int j=0; j<n; j++) {
for(int k=0; k<n; k++) {
if(graph[i][k]==1 && graph[k][j]==1) {
graph[i][j] = 1;
}
}
}
}
//
for(int i=0; i<n; i++){
for(int j=0; j<n; j++) {
System.out.print(graph[i][j]+" ");
}
System.out.println();
}
}
}
이슈:
플로이드 워셜을 한 번 돌렸을 때, 건너건너 이어진 곳을 미처 찾지 못하는 문제 발생
-> 단순히 플로이드 워셜을 한 번 더, 총 2번 돌리는 걸로 해결했지만.. 최적화된 방법이 있을 거 같은데
수정)))
의외로 플로이드 워셜 두 번 돌리는 거보다 최적화된 방법이라고 생각했던 게 더 오래 걸린다..?
'알고리즘 > 백준' 카테고리의 다른 글
7576_토마토 (1) | 2024.01.14 |
---|---|
14503_ 해결 못 함 (0) | 2024.01.09 |
1058_친구 (1) | 2024.01.05 |
3085_사탕 게임 (1) | 2023.12.23 |
1926_그림 (0) | 2023.12.21 |