问题描述: 给你一张无向图,定义环为从i出发到达j然后从j返回i并且所有点都只经过一次(最少为3个点),求所有环当中经过路径最小的环

算法描述: 首先容易想到的是暴力来枚举环,当删除其中一条边ij后再跑一边从i到j的最短路,然后加上边ij的值就是含有边ij的最小环的值,这样最坏的                    时间复杂度可以达到O(n^4),显然复杂度有点大。

所以我们考虑降低时间复杂度,我们来分析下floyd的实现过程,当枚举顶点k之前我们已经求得了顶点为1  -  k-1 的最短

路,所以我们可以在跟新k之前枚举k之前的i和j的组合,我们可以知道dis[i][j]没有经过k点,所以我们就可以知道

如果dis[i][j]+mp[i][k]+mp[k][j] != inf(mp[i][j]为没有跟新得边值) 时就存在一条经过ijk的最小环,所以我们要求的是所有环当

中最小的哪一个!

HDU1599:

find the mincost route

Time Limit: 1000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 4556    Accepted Submission(s): 1838

Problem Description
杭州有N个景区,景区之间有一些双向的路来连接,现在8600想找一条旅游路线,这个路线从A点出发并且最后回到A点,假设经过的路线为V1,V2,....VK,V1,那么必须满足K>2,就是说至除了出发点以外至少要经过2个其他不同的景区,而且不能重复经过同一个景区。现在8600需要你帮他找一条这样的路线,并且花费越少越好。
Input
第一行是2个整数N和M(N <= 100, M <= 1000),代表景区的个数和道路的条数。
接下来的M行里,每行包括3个整数a,b,c.代表a和b之间有一条通路,并且需要花费c元(c <= 100)。
Output
对于每个测试实例,如果能找到这样一条路线的话,输出花费的最小值。如果找不到的话,输出"It's impossible.".
Sample Input
3 3 1 2 1 2 3 1 1 3 1 3 3 1 2 1 1 2 3 2 3 1
Sample Output
3 It's impossible.

最小环模板题:可以当模板

AC代码:(c++)

#include<algorithm>
#include<iostream>
#include<cstdio>using namespace std;const int maxn = 105;
const int inf = 1e8;class Floyd{
public:int n,m;int dis[maxn][maxn],mp[maxn][maxn];int init(){if(scanf("%d%d",&n,&m)!=2)return -1;for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)mp[i][j]=dis[i][j]=inf;for(int i=0;i<m;i++){int u,v,w;scanf("%d%d%d",&u,&v,&w);mp[u][v]=mp[v][u]=dis[u][v]=dis[v][u]=min(w,mp[u][v]);}}void floyd(){int MinCost = inf;for(int k=1;k<=n;k++){for(int i=1;i<k;i++)for(int j=i+1;j<k;j++)MinCost = min(MinCost,dis[i][j]+mp[i][k]+mp[k][j]);//跟新k点之前枚举ij求经过ijk的最小环for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);      //跟新k点}if(MinCost==inf)puts("It's impossible.");else printf("%d\n",MinCost);}}fd;int main()
{while(~fd.init())fd.floyd();return 0;
}

Floyd最小环算法相关推荐

  1. floyd 判圈算法 UVa 11549 计算器谜题

    题目http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  2. leetcode202(Floyd判圈算法(龟兔赛跑算法))

    Write an algorithm to determine if a number is "happy". 写出一个算法确定一个数是不是快乐数. A happy number ...

  3. Floyd判圈算法(Floyd's cycle detection

    Floyd判圈算法(Floyd Cycle Detection Algorithm),又称龟兔赛跑算法(Tortoise and Hare Algorithm).该算法由美国科学家罗伯特·弗洛伊德发明 ...

  4. 坐在马桶上看算法:只有五行的Floyd最短路算法

    坐在马桶上看算法:只有五行的Floyd最短路算法 此算法由Robert W. Floyd(罗伯特·弗洛伊德)于1962年发表在"Communications of the ACM" ...

  5. floyd判环算法(龟兔赛跑算法)

    floyd判环算法(龟兔赛跑算法) 注意,这个算法是用来判断一条链+一条环的图,环的长度或者环与链的交界处的,所以此floyd非彼floyd(虽然都是一个人想出来的). (图不是我的) 如果只要求环的 ...

  6. 【啊哈!算法】算法6:只有五行的Floyd最短路算法

            暑假,小哼准备去一些城市旅游.有些城市之间有公路,有些城市之间则没有,如下图.为了节省经费以及方便计划旅程,小哼希望在出发之前知道任意两个城市之前的最短路程.         上图中有 ...

  7. 【算法】只有五行的Floyd最短路算法

     暑假,小哼准备去一些城市旅游.有些城市之间有公路,有些城市之间则没有,如下图.为了节省经费以及方便计划旅程,小哼希望在出发之前知道任意两个城市之前的最短路程. 上图中有4个城市8条公路,公路上的数字 ...

  8. UVa 11549 Calculator Conundrum (训练指南,Floyd 判圈算法)

    算法竞赛训练指南, 42 页 注意: 1. 用数组来记录一个数的各位的数字 2. 快慢指针来记录链表环的入点(Floyd 判圈算法) #include <cstdio> #include ...

  9. matlab求解关键,基于遗传算法的多辆洒水车最优路径求解(其中包含MATLAB的一些关键语句说明和Floyd,Dijkstra,Euler算法).doc...

    基于遗传算法的多辆洒水车最优路径求解(其中包含MATLAB的一些关键语句说明和Floyd,Dijkstra,Euler算法) 摘要 车辆路径问题可以分为以点为服务和以边为服务两种,洒水车问题是以边为服 ...

最新文章

  1. 使用Kettle抽取数据时,出现中文乱码问题解决方案
  2. 二、JavaWeb总结:Tomcat服务器的学习和使用
  3. 再谈新浪微博架构——视频观后笔记
  4. OPEN(SAP) UI5 扫盲
  5. STL 二分查找 upper_bound和lower_bound用法
  6. python open读取_python,一读取文件open()
  7. 奇怪,有的Python函数或方法调用需要两对括号?
  8. markDown用这一招实现图片并排显示
  9. db link hang的解决方法
  10. 一分钟搞懂的算法之BPE算法
  11. Java 多维数组 三维数组 初始化 赋值 打印
  12. StarUml:Exception EOleSysError in module StarUML.ex
  13. 谷歌输入法/谷歌拼音输入法/WIN7好用的输入法
  14. Android截屏的几种方法
  15. Web前端鼠标变小手CSS和JS(Vue)两种实现
  16. oracle回撤,Oracle使用排列组合计算最大回撤幅度
  17. fpga 级联fifo(VHDL)
  18. 实验题目:约瑟夫环问题:设编号为1,2,3,……,n的n(n>0)个人按顺时针方向围坐一圈,m为任意一个正整数。从第一个人开始顺时针方向自1起顺序报数,报到m时停止并且报m的人出列,再从他的下一个人
  19. [计算机网络]HTTP、UDP、TCP协议
  20. Matlab 安装免费提供的 MinGW-w64 C/C++ 编译器

热门文章

  1. linux下gperf工具(tcmalloc)检查C/C++代码内存泄露问题操作说明
  2. 【渝粤教育】国家开放大学2018年秋季 0686-21T广告创意与表现(一) 参考试题
  3. 计算机视觉自学进阶路上不可忽略的几个原创公众号
  4. ThinkPHP3.1在PHP7下页面空白的解决方案
  5. python sci数据_scanpy学习笔记:用Python分析单细胞数据
  6. 听过很多道理,却依然过不好这一生
  7. Javaweb学习(一)
  8. 小鱼赚钱app是真的吗?小鱼赚钱下载试玩应用教程
  9. PixHawk飞控和Mission Planner地面站安装调试
  10. resources目录下文件加载失败,class path resource [***] cannot be resolved to URL because it does not exist