[BOJ]11404-플로이드

yoon_H·2023년 12월 3일
0

BOJ

목록 보기
69/83

11404

결과 코드

#include <iostream>
#include <algorithm>

using namespace std;

int N, M;
int answer[101][101];

int main()
{
    cin.tie(NULL);
    cout.tie(NULL);
    ios_base::sync_with_stdio(false);

    cin >> N >> M;

    for (int i = 1; i <= N; i++)
    {
        for (int j = 1; j <= N; j++)
        {
            answer[i][j] = 1000000000;
        }
    }

    for (int i = 0; i < M; i++)
    {
        int a, b, c;

        cin >> a >> b >> c;

        answer[a][b] = min(answer[a][b], c);
    }

    for (int i = 1; i <= N; i++)
    {
        for (int j = 1; j <= N; j++)
        {
            for (int k = 1; k <= N; k++)
            {
                if (k == j) answer[k][j] = 0;
                answer[k][j] = min(answer[k][j], answer[k][i] + answer[i][j]);
            }
        }
    }

    for (int i = 1; i <= N; i++)
    {
        for (int j = 1; j <= N; j++)
        {
            if (answer[i][j] == 1000000000)
            {
                answer[i][j] = 0;
            }
            cout << answer[i][j] << ' ';
        }
        cout << '\n';
    }
}

처음에는 가장 안쪽 for문의 변수를 경유 지점으로 삼았는데 순서의 문제가 있어서 가장 바깥쪽 변수를 경유 지점으로 정했다.

참고자료


[플로이드 워셜 알고리즘](https://velog.io/@kimdukbae/%ED%94%8C%EB%A1%9C%EC%9D%B4%EB%93%9C-%EC%9B%8C%EC%85%9C-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-Floyd-Warshall-Algorithm)

0개의 댓글