알고리즘/백준
11403_경로 찾기
베리영young
2024. 1. 5. 01:44
사용 알고리즘: 플로이드-워셜
사용 언어: 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번 돌리는 걸로 해결했지만.. 최적화된 방법이 있을 거 같은데
수정)))
의외로 플로이드 워셜 두 번 돌리는 거보다 최적화된 방법이라고 생각했던 게 더 오래 걸린다..?