代码块 /* 枚举每一个点去更新原来的距离,这样得到的最终就是任意边到任意边的最小值 */ #include<iostream> #include <cstring> #include<algorithm> using namespace std; #define FOR(i,a,b) for(int i = a; i<=b; i++) const int maxx = 1e3; int ary[maxx][maxx]; int main() { memset(ary, 0x3f3f3f3f, sizeof ary); int n, m; cin >> n >> m; for (int i = 1; i <= n; i++) ary[i][i] = 0; FOR(i, 1, m) { int a, b, c; cin >> a >> b >> c; ary[a][b] = c; } FOR(k, 1, n) { for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { ary[i][j] = min(ary[i][j] , ary[i][k] + ary[k][j]); } } } FOR(i, 1, n) { FOR(j, 1, n) { printf("%5d ", ary[i][j]); } cout << endl; } }