๋ฌธ์ :
๋ถ์ :
์ด ๋ฌธ์ ๋ ํ๋ก์ด๋ ์์ฌ ๋ฐฉ์์ผ๋ก ์ ๊ทผํด๋ณด์๋ค.
๋ฐฑ์ค ๋ ผ์ ๋ณด๋๊น DFS, BFS ๋ก๋ ํ ์ ์๋ ๊ฒ ๊ฐ์ ๋ณด์๋ค.
ํ๋ก์ด๋ ์์ฌ์ ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ๊ณผ๋ ๋ฌ๋ฆฌ ๋ชจ๋ ์ ์ ์์ ๋ชจ๋ ์ ์ ์ผ๋ก์ ์ต๋จ ๊ฒฝ๋ก๋ฅผ ์ฐพ๋๋ฐ ์ฌ์ฉ๋๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ์ฅ ์ ์ ๋น์ฉ์ ํ๋์ฉ ์ ํํ๋ค๋ฉด ํ๋ก์ด๋ ์์ฌ์ ๊ฑฐ์ณ๊ฐ๋ ์ ์ ์ ๊ธฐ์ค์ผ๋ก ์ ๊ทผํด์ผ ํ๋ค๋ ์ ์ด ํฌ์ธํธ์๋ค.
ํ๋ก์ด๋ ์์ฌ์ ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ์ ์๊ฑฐํ๋ค๊ณ ํ๋ค.
๊ฐ์ฅ ์ดํด๋๋ ๋๋ชฉ์ด๋ผ ํ๋ฉด์ X์์ Y๋ก ๊ฐ๊ณ ์ถ์ ๋
X์์ Y๋ก ๊ฐ๋ ์ต์ ๋น์ฉ VS X์์ 1(๊ฑฐ์ณ๊ฐ๋ ๋ ธ๋)๋ก ๊ฐ๋ ์ต์ ๋น์ฉ + 1์์ Y๋ก ๊ฐ๋ ์ต์ ๋น์ฉ
์ด์๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ 3๊ฐ์ for๋ฌธ์ด ํ์ํ๊ณ ๊ฑฐ์ณ๊ฐ๋ ๋ ธ๋์ ๋ํด ์์ ๋ ธ๋, ๋ ๋ ธ๋ ๊ฐ์ ๋ณ๊ฒฝ์ํค๋ฉฐ ๋ชจ๋ ๋ ธ๋๋ค์ ๊ฒ์ํ๋ค.
c++ ์ฝ๋ :
//
// 11403_path.cpp
// SOMA๐ฉ๐ป๐ป
//
// Created by JoSoJeong on 2021/02/18.
//
#include <stdio.h>
#include <iostream>
#define MAX 101
using namespace std;
int path[MAX][MAX];
void find_path(int n){
int d[n][n];
for(int i = 0; i< n; i++){
for(int j = 0; j <n; j++){
d[i][j] = path[i][j];
}
}
//k ๊ฑฐ์ณ๊ฐ๋ ๋
ธ๋
for(int k = 0; k< n; k++){
//i ์ถ๋ฐ ๋
ธ๋
for(int i = 0; i <n; i++){
//j ๋์ฐฉ ๋
ธ๋
for(int j = 0; j <n; j++){
if(d[i][k] >0 && d[k][j] > 0){ //๊ฑฐ์ณ ๊ฐ๋ ๊ธธ ์์ผ๋ฉด
d[i][j] = 1;
}
}
}
}
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++){
cout << d[i][j] << " ";
}
cout << endl;
}
}
int main(){
int n;
cin >> n;
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++){
cin >> path[i][j];
}
}
// for(int i = 0; i< n; i++){
// for(int j = 0; j <n; j++){
// cout << path[i][j] << " ";
// }
// cout << endl;
// }
find_path(n);
return 0;
}
'Algorithm๐ฐ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 18870 ์ขํ ์์ถ (0) | 2021.02.19 |
---|---|
[๋ฐฑ์ค] 2660 ํ์ฅ ๋ฝ๊ธฐ Floyd Warshall (0) | 2021.02.18 |
[๋ฐฑ์ค] 2178 ๋ฏธ๋ก ํ์ bfs (0) | 2021.02.17 |
[๋ฐฑ์ค] 1931 ํ์์ค ๋ฐฐ์ (0) | 2021.02.17 |
[๋ฐฑ์ค] 19598 ์ต์ ํ์์ค ๊ฐ์ (0) | 2021.02.17 |
๋๊ธ