题目:

find the safest road

Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 12964    Accepted Submission(s): 4625

Problem Description
XX星球有很多城市,每个城市之间有一条或多条飞行通道,但是并不是所有的路都是很安全的,每一条路有一个安全系数s,s是在 0 和 1 间的实数(包括0,1),一条从u 到 v 的通道P 的安全度为Safe(P) = s(e1)*s(e2)…*s(ek) e1,e2,ek是P 上的边 ,现在8600 想出去旅游,面对这这么多的路,他想找一条最安全的路。但是8600 的数学不好,想请你帮忙 ^_^
Input
输入包括多个测试实例,每个实例包括:
第一行:n。n表示城市的个数n<=1000;
接着是一个n*n的矩阵表示两个城市之间的安全系数,(0可以理解为那两个城市之间没有直接的通道)
接着是Q个8600要旅游的路线,每行有两个数字,表示8600所在的城市和要去的城市
Output
如果86无法达到他的目的地,输出"What a pity!",
其他的输出这两个城市之间的最安全道路的安全系数,保留三位小数。
Sample Input
  
3 1 0.5 0.5 0.5 1 0.4 0.5 0.4 1 3 1 2 2 3 1 3
Sample Output
  
0.500 0.400 0.500
Author
ailyanlu
Source
HDU 2007-Spring Programming Contest - Warm Up (1)
Recommend
8600   |   We have carefully selected several similar problems for you:   1217  1598  1142  1690  2544 

思路:

给出了一张图,然后题目中求的不是最短路,是安全度,而安全度是系数的乘积,那么我们的dis[i]就代表i点的安全度,在找顶点的时候,我们要找出安全度最大的,而不是最短路中的最小的,更新的时候把安全系数乘起来,还有一点要注意0,判断一下精度,还有算顶点的时候,只需要n-1次

代码:

#include <cstdio>
#include <cstring>
#include <cctype>
#include <string>
#include <set>
#include <iostream>
#include <stack>
#include <cmath>
#include <queue>
#include <vector>
#include <algorithm>
#define mem(a,b) memset(a,b,sizeof(a))
#define inf 0x3f3f3f3f
#define mod 1000007
#define N 1010
#define M 12357
#define ll long long
using namespace std;
double map[N][N],dis[N];
int n,vis[N];
void dijkstra(int st,int ed)
{int k,flag=0;for(int i=1; i<=n; i++){dis[i]=map[st][i];vis[i]=0;}vis[st]=1;for(int i=1; i<n; i++){k=0;double maxx=0;for(int j=1; j<=n; j++)if(vis[j]==0&&dis[j]>maxx){maxx=dis[j];k=j;}if(fabs(maxx)<=10e-6){flag=1;break;}vis[k]=1;for(int j=1; j<=n; j++)if(vis[j]==0&&dis[k]*map[k][j]>dis[j])dis[j]=dis[k]*map[k][j];}if(flag)puts("What a pity!");else printf("%.3lf\n",dis[ed]);return;
}
int main()
{while(~scanf("%d",&n)){mem(map,0);for(int i=1; i<=n; i++)for(int j=1; j<=n; j++)scanf("%lf",&map[i][j]);int t,st,ed;scanf("%d",&t);while(t--){scanf("%d%d",&st,&ed);dijkstra(st,ed);}}return 0;
}

HDU1596 find the safest road(最短路变形,Dijkstra)相关推荐

  1. hdu1596 find the safest road(dijkstra求最短路)

    find the safest road                                                                           Time ...

  2. find the safest road——最短路

    find the safest road Problem Description XX星球有很多城市,每个城市之间有一条或多条飞行通道,但是并不是所有的路都是很安全的,每一条路有一个安全系数s,s是在 ...

  3. Gym-100851F Froggy Ford 最短路变形 dijkstra || spfa

    题意:有条宽为w的河流,两岸分别在x = 0, x = w处,河中间有n个石头.在河的左岸有一只青蛙想通过石头跳到对岸去.现在可以在河中间某个位置多加一块石头,使得青蛙在单步跳跃中的最大值最小,问应在 ...

  4. 杭电1596 find the safest road

    find the safest road Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

  5. HDU1596find the safest road(floyd)

    题目链接 find the safest road Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Ja ...

  6. poj 2263 最短路变形——最小边的最大值

    文章目录 本题:最短路变形--最小边的最大值 最短路变形--最大边的最小值 本题:最短路变形--最小边的最大值 最短路变形--最大边的最小值 poj2253

  7. poj 2253 最短路变形——最大边的最小值

    文章目录 本题:最短路变形--最大边的最小值 最短路变形--最小边的最大值 本题:最短路变形--最大边的最小值 题意: 给出两只青蛙.以及其他石头的坐标,需要求出可以到达另一只青蛙的所有路径中,青蛙跳 ...

  8. 杭电1596find the safest road(spfa)

    find the safest road Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

  9. 杭电1596find the safest road

    find the safest road Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

最新文章

  1. SHOW PROCESSLIST 命令详解 (查看锁表)
  2. selenium环境搭建1
  3. python3.8.3下载不了nltk_在ubuntu16.04+python3.5情况下安装nltk,以及gensim时pip3安装不成功的解决办法...
  4. ibatis与spring的整合
  5. c 导入数据到oracle,excel中数据导入到Orcale数据库表中的方法 | 学步园
  6. github注册之后更新教程
  7. 三星上线售价99万8K电视 网友:是不是多打了一位数
  8. eclipse中ctrl+h默认打开是JavaSearch,怎么设置成默认打开是FileSearch
  9. python循环结构代码_Python --- 程序的循环结构
  10. 阿里开发规范_字字珠玑,高级技术专家带你了解阿里的开发流程规范
  11. DataBase -- Operator
  12. 计算机信息安全管理大作业,《信息安全大作业》.doc
  13. 118_网络编程_对IP、网络ID、主机ID、子网掩码、点分十进制的理解
  14. Finalize()、Dispose(bool disposing)和Dispose()的使用场景与对比
  15. php-ftm,关于KEA128中FTM0/1的问题
  16. 原价游戏太贵?爬取steam游戏优惠信息
  17. CPU/显卡GPU/CUDA/内存/缓存/SDK/API/DLL【转载整理】
  18. css背景图像属性_如何将CSS3转换应用于背景图像
  19. 怎么学计算机打字输入,如何学电脑打字?成为打字员
  20. (七) carla真实世界坐标系与全局俯视地图像素坐标系变换

热门文章

  1. 利用Python做一个绝地求生“科学家”
  2. 数据平台发展史-从数据仓库数据湖到数据湖仓
  3. 成都InfoComm China 2018高峰会议 开拓新商机、扩建商业网络的专业学习平台
  4. 科普丨表观修饰让”自闭儿童”不再自闭
  5. 坦克大战系列一:从零编写【坦克大战】
  6. LeetCode+ 71 - 75
  7. xcode中xib使用之轻松学习
  8. j2me证券指标系统
  9. 计算机网络(1)到网络层
  10. 还在观望?CocosCreator3D小案例《小鸭快跑》新鲜出炉!