YeJin's Footsteps

11404번: 플로이드 본문

Computer Science & Engineering/알고리즘

11404번: 플로이드

YeJinii 2021. 7. 19. 21:21

문제 링크

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

 

11404번: 플로이드

첫째 줄에 도시의 개수 n이 주어지고 둘째 줄에는 버스의 개수 m이 주어진다. 그리고 셋째 줄부터 m+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 버스의 출발 도시의 번호가

www.acmicpc.net

 

문제 풀이 코드

#include <iostream>
#include <algorithm>

#define MAX 1e9

using namespace std;

const int MN=101;

int n,m;
int floyd[MN][MN];

int main(void){
    
    cin>>n>>m;
    for(int i=1; i<=n; i++){
        for(int j=1; j<=n; j++){
            if(i==j) floyd[i][j]=0;
            else floyd[i][j]=MAX;
        }
    }

    for(int i=0; i<m; i++){
        int u,v,w; cin>>u>>v>>w;
        floyd[u][v]=min(floyd[u][v],w);
    }

    for(int k=1; k<=n; k++){
        for(int i=1; i<=n; i++){
            for(int j=1; j<=n; j++){
                floyd[i][j]=min(floyd[i][j], floyd[i][k]+floyd[k][j]);
            }
        }
    }

    for(int i=1; i<=n; i++){
        for(int j=1; j<=n; j++){
            if(floyd[i][j]==MAX){
                cout<<0<<' ';
            }
            else cout<<floyd[i][j]<<' ';
        }cout<<'\n';
    }

    return 0;
}

 

이건 내가 문제풀면서 패드에 끄적거린거..ㅎ

'Computer Science & Engineering > 알고리즘' 카테고리의 다른 글

1238번: 파티  (0) 2021.07.20
2458번: 키 순서  (0) 2021.07.19
11403번: 경로 찾기  (0) 2021.07.19
멀쩡한 사각형  (0) 2021.07.17
짝지어 제거하기  (0) 2021.07.17
Comments