[hdu P1599] find the mincost route

杭州有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.

这是一道无向图最小环的模板题。看来我不会的还有挺多的啊。。。

无向图最小环就是在一张无向图当中,找出一个点数大于等于3的简单环,其权值最小。

这个方法还是比较巧妙的,用floyd相当于动归思想O(n^3)的复杂度算出来(路径也可算)。

如果用dij则要O(n^4)。

这。。应该算是一个模板吧。

唯一要说的,就是这题三个值相加,0x3f3f3f3f*3会爆int。

code:

 #include<bits/stdc++.h>
 #define Ms(a,x) memset(a,x,sizeof a)
 using namespace std;
 ;
 int n,m,w[N][N],f[N][N],ans;
 int main() {
     while (scanf("%d%d",&n,&m)!=EOF) {
         Ms(w,),Ms(f,),ans=f[][];
         ,x,y,z; i<=m; i++) {
             scanf("%d%d%d",&x,&y,&z);
             w[x][y]=z<w[x][y]?z:w[x][y],w[y][x]=w[x][y];
         }
         ; i<=n; i++)
             ; j<=n; j++) f[i][j]=w[i][j];
         ; k<=n; k++) {
             ; i<k; i++)
                 ; j<k; j++)
                     ans=min(ans,f[i][j]+w[i][k]+w[k][j]);
             ; i<=n; i++)
                 ; j<=n; j++)
                     f[i][j]=min(f[i][j],f[i][k]+f[k][j]);
         }
         ][]) printf("%d\n",ans);
         else puts("It's impossible.");
     }
     ;
 }

[hdu P1599] find the mincost route的更多相关文章

  1. HDU 1599 find the mincost route(floyd求最小环 无向图)

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1599 find the mincost route Time Limit: 1000/2000 MS ...

  2. hdu 1599 find the mincost route (最小环与floyd算法)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1599 find the mincost route Time Limit: 1000/2000 MS ...

  3. hdu 1599 find the mincost route(无向图的最小环)

    find the mincost route Time Limit: 1000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/O ...

  4. hdu 1599 find the mincost route floyd求无向图最小环

    find the mincost route Time Limit: 1000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/O ...

  5. hdu 1599 find the mincost route

    http://acm.hdu.edu.cn/showproblem.php?pid=1599 floyd找最小环. #include <cstdio> #include <cstri ...

  6. hdu 1599 find the mincost route 最小环

    题目链接:HDU - 1599 杭州有N个景区,景区之间有一些双向的路来连接,现在8600想找一条旅游路线,这个路线从A点出发并且最后回到A点,假设经过的路线为V1,V2,....VK,V1,那么必须 ...

  7. HDU 1599 find the mincost route (无向图的最小环)

    题意: 给一个带权无向图,求其至少有3个点组成的环的最小权之和. 思路: (1)DFS可以做,实现了确实可以,只是TLE了.量少的时候应该还是可以水一下的.主要思路就是,深搜过程如果当前点搜到一个点访 ...

  8. hdu 1599 find the mincost route(flyod求最小环)

    Problem Description 杭州有N个景区,景区之间有一些双向的路来连接,现在8600想找一条旅游路线,这个路线从A点出发并且最后回到A点,假设经过的路线为V1,V2,....VK,V1, ...

  9. HDU 1599 find the mincost route (无向图floyd最小环详解)

    转载请注明出处:http://blog.csdn.net/a1dark 分析:终于弄懂了floyd的原理.以前的理解一直肤浅.所以一做到floyd应用的题.就拙计了.其实floyd的本质DP.利用前K ...

随机推荐

  1. 腾讯TBS加载网页无法自适应记录

    1.  所遇到的问题 webview加载指定网页无法实现自适应,之前在加载重构一个网页的时候,其实也遇到这种问题,然后就有了下面的一下步骤 WebSettings webSettings = view ...

  2. bugfree3.0.1-修改“优先级”“严重等级”为中文

    1.进入目录C:\xampp\htdocs\bugfree\protected\models 2.打开文件 Info.php

  3. Python-python中数组和列表读取一列的方法

    转载自:https://blog.csdn.net/songyunli1111/article/details/78109976 在python中,普通的列表list和numpy中的数组array是不 ...

  4. Docker:Docker搭建Redis集群(6)

    国外的公有云实在是太慢了,经常time out 这里搜集几个国内出名的: hub.c.163.com (网易:https://c.163.com/hub#/m/home/) dev.aliyun.co ...

  5. 在服务器上搭建node环境

    一般公司的发布是后台人员完成的,但是作为开发不会发布项目还是有点不高级的感觉 因为没有搭建虚拟机于是就直接在我阿里云的服务器上搭建了node环境, 第一步,前往node官网下载linux下的阿里云的镜 ...

  6. GO数据类型

    基本数据类型 Go语言中有丰富的数据类型,除了基本的整型.浮点型.布尔型.字符串外,还有数组.切片.结构体.函数.map.通道(channel)等. 整形 获取对象的长度的内建len()函数返回的长度 ...

  7. ajax跨域问题及相关解决方案

    1 什么是跨域 所谓的跨域是指浏览器不能执行其他网站的脚本.它是由浏览器的同源策略造成的,是浏览器施加的安全限制. 所谓同源是指,域名,协议,端口均相同: 2 什么时候会存在跨域的问题 页面访问不同源 ...

  8. 给eclipse设置自动补全的步骤

    按照如下步骤:window—>preferences—>java—>editor—>content assist—>然后找到如下图所示的输入框,然后输入如下的字母:.qw ...

  9. python 猜数字游戏

    import random print('==============学无止境==========') secret=random.randint(1,10) print('sec:',secret) ...

  10. Shell cace条件语句

    cace条件语句,取相对应的多个值,进行输出. 语句:case语句:case $n in 回车\  值)回车\ 命令 :: 值)命令 esac case $1 in start) echo “启动” ...