您的位置:首页 > 其它

floyd 最短路 模板

2016-10-22 14:01 274 查看
floyd 算法主要解决:

有负权边的有向图或者无向图的两两节点之间的最短路。

如果存在有G[i][i]是负数,那么说明有负权环。

可以理解为最多k圈,每次更新至少能求出来一圈最短路。

int G[maxn][maxn], n;
void init(){
for(int i = 0 ; i <= n; ++i)
for(int j = 0; j <= n; ++j)
G[i][j] = (i==j) ? 0 : INF;
}
void floyd(){
for(int k = 1; k <= n; ++k)
for(int i = 1; i <= n; ++i)
for(int j = 1; j <= n; ++j)
G[i][j] = min(G[i][j], G[i][k]+G[k][j]);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: