Floyd判最小环算法模板
2014-06-11 20:10
218 查看
算法思想:如果存在最小环,会在编号最大的点u更新最短路径前找到这个环,发现的方法是,更新最短路径前,遍历i,j点对,一定会发现某对i到j的最短路径长度dis[i][j]+mp[j][u]+mp[u][i] != INF,这时i,j是图中挨着u的两个点,因为在之前最短路更新过程中,u没有参与更新,所以dis[i][j]所表示的路径中不会出现u,如果成立,则一定是一个环。用Floyd算法来实现。但是对于负环此算法失效,因为有负环时,dis[i][j]已经不能保证i到j的路径上不会经过同一个点多次了。
算法代码:
View Code
算法代码:
int Floyd_MinCircle() { int Mincircle = Mod; int i,j,k; for(k=1;k<=n;k++) { for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { if(dis[i][j] != Mod && mp[j][k] != Mod && mp[k][i] != Mod && dis[i][j] + mp[j][k] + mp[k][i] < Mincircle) Mincircle = dis[i][j] + mp[j][k] + mp[k][i]; } } //正常Floyd for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { if(dis[i][k] != Mod && dis[k][j] != Mod && dis[i][k] + dis[k][j] < dis[i][j]) { dis[i][j] = dis[i][k] + dis[k][j]; pre[i][j] = pre[k][j]; } } } } return Mincircle; }
View Code
相关文章推荐
- 【有向图的最小树形图---朱刘算法】模板
- 最小树形图模板(朱刘算法)
- hdu 1863 畅通工程 最小生成树模板入门题 prim+kruskal两种算法AC。
- 最小树形图 之 朱刘算法【模板】
- 最小生成树之算法记录【prime算法+Kruskal算法】【模板】 .
- 最小费用路算法模板
- UVA-11183 Teen Girl Squad (最小树形图、朱刘算法模板)
- POJ 3164 Command Network 最小树形图模板 朱-刘算法
- 最小树形图(朱刘算法模板)
- 图论--最小树形图朱刘算法模板
- 最小树形图模板朱刘算法分享
- poj 2914&&hdu 3002 全局最小割Stoer-Wagner算法模板
- POJ-1251 Jungle Roads 最小生成树 两种算法的简单模板
- Hihocoder 之 #1097 : 最小生成树一·Prim算法 (用vector二维 模拟邻接表,进行prim()生成树算法, *【模板】)
- 最小生成树prime算法模板
- 最小生成树问题 普利姆算法简单模板 hdoj1233
- 求解最小生成树的算法 prim算法(附模板)
- hdu 4009 最小树形图模板题朱刘算法
- 最小生成树之算法记录【prime算法+Kruskal算法】【模板】
- 最小割s-w算法模板