๐ [๋ฐฑ์ค์๊ณ ๋ฆฌ์ฆ ํ์ด] Q.11403 ๊ฒฝ๋ก ์ฐพ๊ธฐ ๋ฌธ์ ํ์ด
๐ ๋ฌธ์
https://www.acmicpc.net/problem/11403
๊ฐ์ค์น ์๋ ๋ฐฉํฅ ๊ทธ๋ํ G๊ฐ ์ฃผ์ด์ก์ ๋, ๋ชจ๋ ์ ์ (i, j)์ ๋ํด์, i์์ j๋ก ๊ฐ๋ ๊ฒฝ๋ก๊ฐ ์๋์ง ์๋์ง ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
๐ ์ ๊ทผ๋ฒ
boj Q.11403 ๊ฒฝ๋ก ์ฐพ๊ธฐ ๋ฌธ์ ์ ๋๋ค.
์ฃผ์ด์ง ๋ฌธ์ ๋ฅผ ๋ณด๋ฉด
๋ชจ๋ ์ ์ (i,j)์ ๋ํด์ i์์ j๋ก ๊ฐ๋ ๊ฒฝ๋ก๊ฐ ์๋์ง ์๋์ง๋ฅผ ๊ตฌํ๋ ๋ฌธ์ ์ ๋๋ค.
๋ชจ๋ ์ ์ ์ ์ถ๋ฐ์ง์์ ๋ชจ๋ ์ ์ ๊น์ง์ ๊ฒฝ๋ก/๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ
ํ๋ก์ด๋ ์์ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํ์ฌ ํ์ด๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
๋ฐ๋ก ์ง์ ์ ์ผ๋ก i ์์ j๋ก ๊ฐ์ง ๋ชปํ๋๋ผ๋
์ค๊ฐ์ ๋ค๋ฅธ ์ง์ ์ ํตํด ๊ฐ ์ ์๋์ง๋ฅผ ํ์ธํ๋ฉด ๋ฉ๋๋ค.
if( graph[i][k] == 1 && graph[k][j] == 1){
graph[i][j] = 1;
}
i์์ k๋ก k์์ j๋ก ์ด๋์ด ๊ฐ๋ฅํ๋ค๋ฉด ๊ฒฐ๊ตญ
i์์ j๊น์ง ๊ฐ ์ ์๋ ๊ฒฝ๋ก๊ฐ ์๋ ๊ฒ์ด๋ฏ๋ก
์ด๋ฅผ ์ด์ฉํ์ฌ ๋ฌธ์ ํ์ด๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
๐ป ์ฝ๋
package problem.shortest.floyd.Q11403;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main_11403 {
static int N;
static int[][] graph;
public static void main(String[] args) throws IOException {
input();
floyd();
print();
}
private static void input() throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
N = Integer.parseInt(br.readLine());
graph = new int[N + 1][N + 1];
for(int i=0; i<N; i++){
String temp[] = br.readLine().split(" ");
for(int j=0; j<N; j++){
graph[i][j] = Integer.parseInt(temp[j]);
}
}
br.close();
}
private static void floyd() {
for(int k=0; k<N; k++){
for(int i=0; i<N; i++){
for(int j=0; j<N; j++){
if( graph[i][k] == 1 && graph[k][j] == 1){
graph[i][j] = 1;
}
}
}
}
}
private static void print(){
for(int i=0; i<N; i++){
for(int j=0; j<N; j++){
System.out.print(graph[i][j]+" ");
}
System.out.println();
}
}
}