Floyed
用于解决多源最短路,对每一个k点进行松弛操作,时间复杂度为O(n^3)
for(int k=0; k<n; k++)
for(int i=0; i<n; i++)
for(int j=0; j<n; j++)
mp[i][j]=min(mp[i][j],mp[i][k]+mp[k][j]);
传递闭包
Floyed的拓展应用,可以补全图中的关系,如果 i->k、k->j,就可以补出i->j
for(int k=0; k<n; k++)
for(int i=0; i<n; i++)
for(int j=0; j<n; j++)
mp[i][j] |= mp[i][k] & mp[k][j];