poj_1125 Floyd最短路
题目大意
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最短路的更多相关文章
- Floyd最短路算法
Floyd最短路算法 ----转自啊哈磊[坐在马桶上看算法]算法6:只有五行的Floyd最短路算法 暑假,小哼准备去一些城市旅游.有些城市之间有公路,有些城市之间则没有,如下图.为了节省经费以及方便计 ...
- 【啊哈!算法】算法6:只有五行的Floyd最短路算法
暑假,小哼准备去一些城市旅游.有些城市之间有公路,有些城市之间则没有,如下图.为了节省经费以及方便计划旅程,小哼希望在出发之前知道任意两个城市之前的最短路程. 上图中有 ...
- 【坐在马桶上看算法】算法6:只有五行的Floyd最短路算法
暑假,小哼准备去一些城市旅游.有些城市之间有公路,有些城市之间则没有,如下图.为了节省经费以及方便计划旅程,小哼希望在出发之前知道任意两个城市之前的最短路程. 上图中有 ...
- BZOJ1491: [NOI2007]社交网络(Floyd 最短路计数)
Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 2343 Solved: 1266[Submit][Status][Discuss] Descripti ...
- Wikioi 1020 孪生蜘蛛 Label:Floyd最短路
题目描述 Description 在G城保卫战中,超级孪生蜘蛛Phantom001和Phantom002作为第三层防卫被派往守护内城南端一带极为隐秘的通道. 根据防护中心的消息,敌方已经有一只特种飞蛾 ...
- FZU2090 旅行社的烦恼 巧妙floyd 最短路
分析:floyd看似很好理解,实际上是状态转移,具体的解释参照这里 http://www.cnblogs.com/chenying99/p/3932877.html 深入理解了floyd后,这个题就可 ...
- 只有五行的Floyd最短路算法
暑假,小哼准备去一些城市旅游.有些城市之间有公路,有些城市之间则没有,如下图.为了节省经费以及方便计划旅程,小哼希望在出发之前知道任意两个城市之前的最短路程. 上图中有 ...
- 仅仅有五行的Floyd最短路算法
暑假,小哼准备去一些城市旅游.有些城市之间有公路,有些城市之间则没有,例如以下图.为了节省经费以及方便计划旅程,小哼希望在出发之前知道随意两个城市之前的最短路程. 上图中有4个城市8条公路,公路上的数 ...
- BZOJ 1491 社交网络 Floyd 最短路的数目
题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1491 题目大意: 见链接 思路: 直接用floyd算法求最短路,同时更新最短路的数目即 ...
随机推荐
- 网页中PNG透明背景图片的完美应用
PNG 图片在网站设计中是不可或缺的部分,最大的特点应该在于 PNG 可以无损压缩,而且还可以设置透明,对于增强网站的图片色彩效果有重要的作用. 但为什么 PNG 图片却没有 GIF 和 JPG 图片 ...
- xaf 自定义登陆页
web Model.xafml view AuthenticationStandardLogonParameters_DetailView https://documentatio ...
- STL六大组件简介
一.STL简介 (一).泛型程序设计 泛型编程(generic programming) 将程序写得尽可能通用 将算法从数据结构中抽象出来,成为通用的 C++的模板为泛型程序设计奠定了关键的基础 (二 ...
- MFC显示GIF动画图片
本帖则将讨论如何在MFC的对话框里显示GIF动画图片.一些关于传统控件的美化方法正在研究当中会陆续发帖的. 这是本帖用到的一个VS2008例程. 附件 GifPicture.rar (138.1 ...
- MySQL主从复制状态及数据一致性监测工具
转: https://blog.csdn.net/m0_37814112/article/details/80914713
- 3dmax fx shader, vertex color
美术那边需要一个能在3dmax里用的支持diffuse纹理和顶点色的additive shader(不带光照). 以前没搞过这个,于是从3dmax自带的vertexcolor.fx,DiffuseBu ...
- atitit.Oracle 9 10 11 12新特性attilax总结
atitit.Oracle 9 10 11 12新特性 1. ORACLE 11G新特性 1 1.1. oracle11G新特性 1 1.2. 审计 1 1.3. 1. 审计简介 1 1.4. ...
- Atitit. 软件GUI按钮与仪表盘--web服务器区--获取apache配置文件路径 linux and apache的启动、停止、重启
Atitit. 软件GUI按钮与仪表盘--web服务器区--获取apache配置文件路径 linux and apache的启动.停止.重启 可以通过"netstat -anp" ...
- angular多个控制器如何共享数据
多个控制器之间共享数据,通常两种方式,一种是在控制器里通过$scope.$$prevSibling或$scope.$$nextSibling获得另一个控制器的作用域对象. 第二种是通过服务的方式,也是 ...
- 基于jQuery左侧小图滚动右侧大图显示代码
今天给大家分享一款 jQuery左侧小图滚动右侧大图显示代码是一款基于jQuery实现的左侧滚动图片点击大图查看效果代码.该实例适用浏览器:IE8.360.FireFox.Chrome.Safari. ...