녕의 학습 기록

백준_11403 경로 찾기 (플로이드-워셜) 본문

Algorithm/Algorithm 문제

백준_11403 경로 찾기 (플로이드-워셜)

kjyyjk 2024. 2. 28. 15:32

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class BJ_11403_경로찾기 {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());

        int[][] distance = new int[n][n];

        int i, j;
        StringTokenizer st;
        for (i=0; i<n; i++) {
            st = new StringTokenizer(br.readLine(), " ");

            for (j=0; j<n; j++) {
                distance[i][j] = Integer.parseInt(st.nextToken());
            }
        }

        int k, s, e;
        for (k=0; k<n; k++) {
            for (s=0; s<n; s++) {
                for (e=0; e<n; e++) {
                    if (distance[s][e]==0) {
                        if (distance[s][k]==1 && distance[k][e]==1) {
                            distance[s][e] = 1;
                        }
                    }
                }
            }
        }

        StringBuilder sb = new StringBuilder();
        for (i=0; i<n; i++) {
            for (j=0; j<n; j++) {
                sb.append(distance[i][j]).append(' ');
            }
            sb.append('\n');
        }

        System.out.println(sb);
    }

}
 

11403번: 경로 찾기

가중치 없는 방향 그래프 G가 주어졌을 때, 모든 정점 (i, j)에 대해서, i에서 j로 가는 길이가 양수인 경로가 있는지 없는지 구하는 프로그램을 작성하시오.

www.acmicpc.net