[문제]
https://www.acmicpc.net/problem/11403
[풀이]
그래프에 있는 모든 정점 (i,j)에 대해 다른 정점으로 가는 경로가 있는지를 구해야 하므로 플로이드-워셜 알고리즘을 이용.
[코드]
#include <iostream>
#include <algorithm>
#include <map>
#include <string>
#include <queue>
#include <cstring>
#define INF 987654321
using namespace std;
int N;
int adj[101][101];
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> N;
for(int i=0; i<N; i++){
for(int j=0; j<N; j++){
cin >> adj[i][j];
if(adj[i][j] == 0)
adj[i][j] = INF;
}
}
//플로이드-워셜
for (int k=0; k<N; k++){
for (int i=0; i<N; i++){
for (int j=0; j<N; j++){
adj[i][j] = min(adj[i][j], adj[i][k] + adj[k][j]);
}
}
}
for(int i=0; i<N; i++){
for(int j=0; j<N; j++){
if(adj[i][j] == INF)
cout << "0 ";
else
cout << "1 ";
}
cout << "\n";
}
}
'알고리즘 공부 및 문제 풀이 > 백준(BOJ)' 카테고리의 다른 글
[boj] 백준 1238 파티 (c++) - 다익스트라 (1) | 2022.09.13 |
---|---|
[boj] 백준 5430 AC (c++) - deque (0) | 2022.09.07 |
[boj] 백준 14888 연산자 끼워넣기 (c++) - 백트래킹 (0) | 2022.08.31 |
[boj] 백준 11052 카드 구매하기 (c++) - dp (0) | 2022.08.30 |
[boj] 백준 2179 미로탐색 (c++) - BFS (0) | 2022.08.29 |