1、求多个点之间的最短路,最广为人知的用法:
for(int k = 0; k < n; k ++)
for(int i = 0; i < n; i ++)
for(int j = 0; j < n; j ++)
if(a[i][j] > a[i][k] +a[k][j])
a[i][j] = a[i][k] + a[k][j];
2、求最小环:
for(int k = 0; k < n; k ++)
for(int i = 0; i < n; i ++)
for(int j = 0; j < n; j ++)
if(ans > a[i][j] + a[j][k] +a[k][i])
ans = a[i][j] + a[j][k] + a[k][i];
3、传递闭包:
for(int k = 0; k < n; k ++)
for(int i = 0; i < n; i ++)
for(int j = 0; j < n; j ++)
if(a[i][j] && a[j][k])
a[i][k] = 1;