BOJ 11404: 플로이드

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

  • 3월동안 210문제 풀기 (13/210)
  • 이름부터 플로이드 와샬
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <bits/stdc++.h>
using namespace std;

int N,M;
long long adj[101][101];

int main() {
  ios::sync_with_stdio(false);
  cin >> N >> M;
  int INF = 1e9;
  for(int i = 0; i < N; i++ )
    for(int j = 0; j < N; j++)
      if(i!=j) adj[i][j] = INF;
  for(int i = 0; i < M; i++) {
    long long u, v, dist;
    cin >> u >> v >> dist;
    adj[u-1][v-1] = min(adj[u-1][v-1], dist);
  }

  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++)
      cout << (adj[i][j] == INF ? 0 : adj[i][j])  << " ";
    cout << "\n";
  }
}