Baekjoon

Baekjoon 11404번 플로이드

ppwag 2020. 12. 3. 18:27

문제

https://www.acmicpc.net/problem/11404

걸린 시간

00 : 15 : 23

풀이

C++

#include <bits/stdc++.h>
#define INF 1e9
#define all(c) c.begin(), c.end()
typedef long long ll;
typedef unsigned long long ull;
using namespace std;

int main(){
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    int n, m;
    cin >> n >> m;
    int a, b, c;
    vector<vector<int>> adj(n, vector<int>(n, INF));
    for(int i = 0; i < n; i++)
        adj[i][i] = 0;
    for(int i = 0; i < m; i++){
        cin >> a >> b >> c;
        if(adj[a-1][b-1] > c)
            adj[a-1][b-1] = c;
    }
    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 << adj[i][j] << " ";
        cout << "\n";
    }
    return 0;
}

문제 이름 그대로 플로이드 와샬 알고리즘 문제이다.

시작도시와 도착도시를 연결하는 노선이 하나가 아닐 수 있다는 조건만 유의해서 플로이드 와샬 알고리즘을 구현하면 ac를 받을 수 있다.

'Baekjoon' 카테고리의 다른 글

Baekjoon 17144번 미세먼지 안녕!  (0) 2020.12.08
Baekjoon 15681번 트리와 쿼리  (0) 2020.12.04
Baekjoon 7682번 틱택토  (0) 2020.12.03
Baekjoon 1956번 운동  (0) 2020.12.02
Baekjoon 9613번 GCD 합  (0) 2020.11.23

댓글