这是求所有节点间最短路径的题。果断用floyd,三个for循环就OK!如果不懂floyd,请看这里。题意有点绕。。。我不知道怎么描述,看了discuss里面有个人的解释,非常好。请看下面:

释疑:
- 一个人可以同时给几个人发送消息
- 结束状态必须是所有人都受到了消息

思路:
1. 通过Stockbrokers(SB?)i发消息,所有人同时收到所花时间 (可以是无穷哦~)
2. 找出第一步所得结果中的值最小的那一个
3. 如果第二步所得结果为无穷,说明此图不可联通~

#include <iostream>
#include <fstream>using namespace std;
#define INF 10000
#define LEN 105
#define MAX(a,b) (a>b?a:b)int path[LEN][LEN];
int map[LEN][LEN];
int n,maxcost,maxid;void Floyd()
{int k,i,j;
/*    for(i=1; i<=n; i++){for(j=1; j<=n; j++)path[i][j]=i;}
*/for(k=1; k<=n; k++){for(i=1; i<=n; i++){for(j=1; j<=n; j++){if(i!=j && map[i][j]>map[i][k]+map[k][j])  //不用求i->i
                {map[i][j]=map[i][k]+map[k][j];path[i][j]=path[k][j];}}}}
}void GetResult()
{int i,j;bool flag;maxcost=INF;for(i=1; i<=n; i++){int tem_max=0;flag=true;for(j=1; j<=n; j++)  //寻找i到其它节点的最短路径中的最大者
        {if(map[i][j]==INF)  //i->j不能到达
            {if(i==j)  //i->i  不计算continue;else{flag=false;break;}}else{tem_max=MAX(map[i][j],tem_max);}}if(flag==false)continue;else if(tem_max<maxcost)  //寻找最小
        {maxcost=tem_max;maxid=i;}}
}int main()
{int i,j;freopen("acm.txt","r",stdin);while(scanf("%d",&n)!=EOF && n){for(i=0; i<=n; i++){for(j=0; j<=n; j++){    map[i][j]=INF;  //表示不能到达
            }}int m,to,co;  for(i=1; i<=n; i++){scanf("%d",&m);for(j=1; j<=m; j++){scanf("%d%d",&to,&co);map[i][to]=co;}}Floyd();GetResult();if(maxcost==INF)printf("disjoint\n");elseprintf("%d %d\n",maxid,maxcost);}return 0;
}

转载于:https://www.cnblogs.com/Jason-Damon/archive/2012/04/24/2467773.html

poj 1125 Floyd简单相关推荐

  1. poj 1125 Stockbroker(多源最短路径)

    题目来源:POJ 1125 简单题目分析及思路: 题意比较难懂,但是思路是多源最短路径,采用Floyd算法. Floyd是一种动态规划的算法,代码简洁易懂,对于稠密图效率要高于Dijkstra算法,但 ...

  2. Poj 1125 Stockbroker Grapevine(Floyd算法求结点对的最短路径问题)

    一.Description Stockbrokers are known to overreact to rumours. You have been contracted to develop a ...

  3. Poj(2240),Floyd求汇率是不是赚钱

    题目链接:http://poj.org/problem?id=2240. Floyd算法修改一下,我要最大路径(通过转汇率变到最大)改成max. #include <iostream> # ...

  4. POJ 3615 floyd 求任意起点终点的最短路

    http://poj.org/problem?id=3615 题意:求起点到终点的最短路,不存在则输出-1.这题居然tle两次,把floyd放在外面就行了. View Code // I'm lanj ...

  5. hdu-1392 Surround the Trees poj Rope (简单凸包)

    hdu  : http://acm.hdu.edu.cn/showproblem.php?pid=1392 题意:给你n个数的坐标,用一根绳子把它们围起来,问你需要多长的绳子? (当数的个数为2时特判 ...

  6. POJ 2263 floyd思想

    http://poj.org/problem?id=2263 题意:汽车的载重量没有限制,取决于道路的承载能力,求起点到终点所经过的路径不会超过道路的承载限制. 分析:本题并不是求最短路径,而是求通过 ...

  7. The Geodetic Set Problem - POJ 1612 Floyd求最短路径所有点集

    题目链接 POJ 1612 Description Let G = (V,E) be a connected graph without loops and multiple edges, where ...

  8. POJ 1125 Stockbroker Grapevine

    题意:有n个人,传播谣言,每个人向其他人传播的时间作为边权,构成一个有向图,问把谣言告诉谁能最快传到所有人,输出这个人和最短时间. 解法:最短路.一个人传到所有人的最短时间即他到所有人最短路的最大值, ...

  9. poj 1470(简单LCA 倍增法)

    题意:给你一个树,有若干个询问,然后让你统计每个结点在询问中做了几次LCA.按照结点顺序输出. 思路:这也是简单的LCA题目,我用的是倍增法.每次查询在相应结点标记上++,最后输出即可.这道题的输入处 ...

  10. poj 3660(Floyd求传递闭包)

    Cow Contest Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9317   Accepted: 5249 Descr ...

最新文章

  1. Eclipse:Cannot complete the install because of a conflicting dependency.问题解决
  2. 汇编解析(6)-二进制文件(嵌入式,纯二进制格式的文件)进行反汇编和汇编
  3. (一)git简介及安装
  4. 企业网站 源码 服务邮箱:_后来才知道:温州腾讯企业邮箱定制服务
  5. 学校校车运营各项安全管理制度_学校校车接送安全管理制度(通用3篇)
  6. 计算机的用户控制,我的电脑我做主——Windows账户家长控制-用户账户控制设置...
  7. 从Dataframe训练数据,构造可迭代训练的batch数据
  8. UVA10912 Simple Minded Hashing【DP】
  9. PotPlayer播放器在双屏扩展模式下,视频播放时所遇到的几个常见问题的专业解答
  10. 遗传算法 python_Python实现入门级遗传算法
  11. Python_基础1
  12. oracle sql语句加减,Oracle sql 常用加减法
  13. 仿真软件proteus构建LCD1602四线驱动实验
  14. 《博德之门3》的许多设计,还不如上世纪的前作
  15. 中国大学MOOC公开信息收集
  16. 我运营公众号这一个月
  17. 聚合供应链,Saas系统,商品供应链
  18. mall 电商 api 接口文档
  19. 粮食行业视频监控系统互联互通技术规范
  20. django2.0 快速实现注册

热门文章

  1. springboot整合mybatis-pluss、sharding-JDBC 水平分表demo
  2. Idea搭建SpringCloud(四)------利用Feign实现负载均衡
  3. scrollView截取指定区域的图片
  4. Js实现input上传图片并显示缩略图
  5. clock_gettime接口和linux时间系统
  6. VC++中轻松实现滑动(Slider)控件
  7. 《云数据中心构建实战:核心技术、运维管理、安全与高可用》——2.4 云计算的发展历程与未来趋势...
  8. 是谁让你的 Linux 平稳运行?感谢封包人吧
  9. 【oracle】sql处理重复数据
  10. Android开发小结Part11:SQLite 通过.db文件导入已有数据库