algorithm/최단 경로
[C++] BOJ 11403 경로 찾기
gartenhh
2021. 7. 10. 11:01
문제
백준 11403번 https://www.acmicpc.net/problem/11403
11403번: 경로 찾기
가중치 없는 방향 그래프 G가 주어졌을 때, 모든 정점 (i, j)에 대해서, i에서 j로 가는 경로가 있는지 없는지 구하는 프로그램을 작성하시오.
www.acmicpc.net
코드
#include<iostream>
using namespace std;
int n, arr[101][101];
int main() {
cin >> n;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
cin >> ans[i][j];
}
}
//k 경유
for (int k = 1; k <= n; k++) {
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
if (ans[i][k] && ans[k][j]) ans[i][j] = 1;
}
}
}
//출력
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
cout << ans[i][j] << ' ';
}
cout << '\n';
}
}
풀이방법
방향 그래프를 배열에 입력받고, 플로이드-와샬 알고리즘을 이용해서 특정 경유점에 대해 경로가 존재하면 배열의 값을 바꿔줬다.
고민과정
최소경로값을 안써서 그런지 브루트포스의 느낌이 강했다.