어제의 나보다 성장한 오늘의 나

[백준][BOJ-11403][자바] 경로 찾기 본문

알고리즘/백준(BOJ)

[백준][BOJ-11403][자바] 경로 찾기

NineOne 2021. 4. 8. 20:52

www.acmicpc.net/problem/11403

 

11403번: 경로 찾기

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

www.acmicpc.net

import java.io.*;
import java.util.*;

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());
		StringTokenizer st;
		int[][] map = new int[N][N];
		int[][] result = new int[N][N];
		
		for(int i=0; i<N; i++) {
			st = new StringTokenizer(br.readLine());
			for(int j=0; j<N; j++) {
				map[i][j] = Integer.parseInt(st.nextToken());
			}
		}
		
		for(int k=0; k<N; k++) {
			for(int i=0; i<N; i++) {
				for(int j=0; j<N; j++) {
					//중간 k를 두고 둘다 1 이면 갈 수 있다.
					if(map[i][k] ==1 && map[k][j] == 1) map[i][j] = 1;
				}
			}
		}
		
		for(int i=0; i<N; i++) {
			for(int j=0; j<N; j++) {
				System.out.print(map[i][j] + " ");
			}
			System.out.println();
		}
	}
}

정리

gooweon.tistory.com/93

 

플로이드 와샬(Floyd-Warshall)

플로이드 와샬(Floyd Warshall)이란? 다익스트라는 하나의 정점에서 출발했을 때 다른 모든 정점으로의 촤단 경로는 구하는 알고리즘이다. 하지만 만약에 '모든 정점'에서 '모든 정점'으로의 최단 경

gooweon.tistory.com

플로이드 와샬을 안다면 간단하게 풀 수 있는 문제이다.

  • 예제 2번을 그리면 위와 같은 형태이다.
  • 방향그래프 i=2, j=3, k=7일 때를 예를 들어 보겠다.
  • 2번 노드에서 3번 노드로 갈 수 있는지는 7번을 거쳐서 간다면 갈 수 있다.
  • 그러면 map[i][k] == 1 이고 map[k][j] == 1 이면 해당 2 -> 3 으로 간다는 의미이다.
Comments