题目大意

N个股票经纪人,每个股票经纪人都会将得到的消息传播给另外一些股票经纪人,传播的速度均不固定,且从A传到B的速度和B传到A的速度不一定相等。给定一个消息,并不一定能够传遍所有的股票经纪人,因为股票经纪人可能形成一座座“孤岛”,使得信息无法送达。 
    现在给定每个股票经纪人能消息传达的其他股票经纪人和传达给其他经纪人所需要的时间,求出将一个消息给哪个(只一个)股票经纪人能够使得消息最快传遍所有的股票经纪人。若无论给哪个股票经纪人都无法使消息传遍所有经纪人,则返回 "disjoint".

题目分析

典型的最短路问题,由于最开始选择的出发点不固定,因此需要求出所有点之间的最短路。采用floyd算法。判断图是否连通,可以通过判断是否从图中所有的点出发都存在无法到达的点来实现:若从图中所有的点出发,都存在无法到达的点,则说明图不连通。

实现(c++)

#include<stdio.h>
#include<string.h>
#include<vector>
using namespace std;
#define INFINITE 1 << 28
int gDist[105][105]; //Floyd算法
void Floyd(int n){
for (int k = 1; k <= n; k++){ //从i到j,中间经过的节点编号不大于k
for (int i = 1; i <= n; i++){ //起点i
for (int j = 1; j <= n; j++){ //终点j
if (gDist[i][j] > gDist[i][k] + gDist[k][j]){
gDist[i][j] = gDist[i][k] + gDist[k][j];
}
}
}
}
}
int main(){
int n;
while (scanf("%d", &n) && n){
int k, v, d;
for (int i = 1; i <= n; i++){
for (int j = 1; j <= n; j++){
gDist[i][j] = INFINITE;
if (i == j)
gDist[i][j] = 0;
}
}
for (int i = 1; i <= n; i++){
scanf("%d", &k);
for (int j = 0; j < k; j++){
scanf("%d %d", &v, &d);
gDist[i][v] = d;
}
}
Floyd(n);
int min_time = INFINITE, min_stockbroker = 0, disjoint_count = 0; for (int i = 1; i <= n; i++){
int max = 0;
bool disjoint = false;
for (int j = 1; j <= n; j++){
if (gDist[i][j] == INFINITE){ //说明存在点i无法到达的点
disjoint = true;
break;
}
max = max > gDist[i][j] ? max : gDist[i][j];
}
if (disjoint){
disjoint++;
continue;
}
if (min_time > max){
min_time = max;
min_stockbroker = i;
} }
if (disjoint_count == n) //如果从每个点出发都有无法到达的点,则说明
//图不是连通的
printf("disjoint\n");
else
printf("%d %d\n", min_stockbroker, min_time);
}
return 0;
}

poj_1125 Floyd最短路的更多相关文章

  1. Floyd最短路算法

    Floyd最短路算法 ----转自啊哈磊[坐在马桶上看算法]算法6:只有五行的Floyd最短路算法 暑假,小哼准备去一些城市旅游.有些城市之间有公路,有些城市之间则没有,如下图.为了节省经费以及方便计 ...

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

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

  3. 【坐在马桶上看算法】算法6:只有五行的Floyd最短路算法

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

  4. BZOJ1491: [NOI2007]社交网络(Floyd 最短路计数)

    Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 2343  Solved: 1266[Submit][Status][Discuss] Descripti ...

  5. Wikioi 1020 孪生蜘蛛 Label:Floyd最短路

    题目描述 Description 在G城保卫战中,超级孪生蜘蛛Phantom001和Phantom002作为第三层防卫被派往守护内城南端一带极为隐秘的通道. 根据防护中心的消息,敌方已经有一只特种飞蛾 ...

  6. FZU2090 旅行社的烦恼 巧妙floyd 最短路

    分析:floyd看似很好理解,实际上是状态转移,具体的解释参照这里 http://www.cnblogs.com/chenying99/p/3932877.html 深入理解了floyd后,这个题就可 ...

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

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

  8. 仅仅有五行的Floyd最短路算法

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

  9. BZOJ 1491 社交网络 Floyd 最短路的数目

    题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1491 题目大意: 见链接 思路: 直接用floyd算法求最短路,同时更新最短路的数目即 ...

随机推荐

  1. IntelliJ IDEA 学习(二):Intellij IDEA 创建Web项目并在Tomcat中部署运行IDEA

    一.创建Web项目  1.File -> New Module,进入创建项目窗口 2.选择Java类型,在 Module name 处输入项目名,点击Next 3.勾选 Web Applicat ...

  2. AutoFac文档8(转载)

    目录 开始 Registering components 控制范围和生命周期 用模块结构化Autofac xml配置 与.net集成 深入理解Autofac 指导 关于 词汇表 泛型 给定一个开放的泛 ...

  3. layui更新表格单元格数据口,更新单元格的内容

    //监听工具条 table.on('tool(edit)', function(obj){ var data = obj.data; if(obj.event === 'getinvitation') ...

  4. Huffman的应用之文件压缩与解压缩

    文件压缩与解压缩>      近期这段时间一直在学习树的这样的数据结构,也接触到了Huffman树以及了解了什仫是Huffman编码,而我们经常使用的zip压缩也是利用的Huffman编码的特性 ...

  5. 收集整理的mybatis资料

    这是个系列文章,讲的非常不错 mybatis 详解(一)------JDBC  https://www.cnblogs.com/ysocean/p/7271600.html mybatis  http ...

  6. tracert路由跟踪工具使用方法

    1. 路由跟踪在线Tracert工具说明 Tracert(跟踪路由)是路由跟踪实用程序,用于确定 IP 数据报访问目标所采取的路径.Tracert 命令用 IP 生存时间 (TTL) 字段和 ICMP ...

  7. Redis 学习笔记四 Mysql 与Redis的同步实践

    一.测试环境在Ubuntu kylin 14.04 64bit 已经安装Mysql.Redis.php.lib_mysqludf_json.so.Gearman. 点击这里查看测试数据库及表参考 本文 ...

  8. PDF文件的加载及展示

    项目需要显示PDF文件,于是遍寻了网络,发现的方法以下几种: 1.使用UIWebView加载,没啥说的,根据文件路径,网络或者本地皆可,创建一个NSURLRequest,然后用webView加载就可以 ...

  9. 《剑指offer》解题笔记

    <剑指offer>解题笔记 <剑指offer>共50题,这两周使用C++花时间做了一遍,谨在此把一些非常巧妙的方法.写代码遇到的难点.易犯错的细节等做一个简单的标注,但不会太过 ...

  10. C语言 · 完数

    算法训练 完数   时间限制:1.0s   内存限制:512.0MB      问题描述 一个数如果恰好等于它的因子之和,这个数就称为“完数”.例如,6的因子为1.2.3,而6=1+2+3,因此6就是 ...