HDU1596 find the safest road(最短路变形,Dijkstra)
题目:
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
第一行:n。n表示城市的个数n<=1000;
接着是一个n*n的矩阵表示两个城市之间的安全系数,(0可以理解为那两个城市之间没有直接的通道)
接着是Q个8600要旅游的路线,每行有两个数字,表示8600所在的城市和要去的城市
其他的输出这两个城市之间的最安全道路的安全系数,保留三位小数。
思路:
给出了一张图,然后题目中求的不是最短路,是安全度,而安全度是系数的乘积,那么我们的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)相关推荐
- hdu1596 find the safest road(dijkstra求最短路)
find the safest road Time ...
- find the safest road——最短路
find the safest road Problem Description XX星球有很多城市,每个城市之间有一条或多条飞行通道,但是并不是所有的路都是很安全的,每一条路有一个安全系数s,s是在 ...
- Gym-100851F Froggy Ford 最短路变形 dijkstra || spfa
题意:有条宽为w的河流,两岸分别在x = 0, x = w处,河中间有n个石头.在河的左岸有一只青蛙想通过石头跳到对岸去.现在可以在河中间某个位置多加一块石头,使得青蛙在单步跳跃中的最大值最小,问应在 ...
- 杭电1596 find the safest road
find the safest road Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
- HDU1596find the safest road(floyd)
题目链接 find the safest road Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Ja ...
- poj 2263 最短路变形——最小边的最大值
文章目录 本题:最短路变形--最小边的最大值 最短路变形--最大边的最小值 本题:最短路变形--最小边的最大值 最短路变形--最大边的最小值 poj2253
- poj 2253 最短路变形——最大边的最小值
文章目录 本题:最短路变形--最大边的最小值 最短路变形--最小边的最大值 本题:最短路变形--最大边的最小值 题意: 给出两只青蛙.以及其他石头的坐标,需要求出可以到达另一只青蛙的所有路径中,青蛙跳 ...
- 杭电1596find the safest road(spfa)
find the safest road Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
- 杭电1596find the safest road
find the safest road Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
最新文章
- SHOW PROCESSLIST 命令详解 (查看锁表)
- selenium环境搭建1
- python3.8.3下载不了nltk_在ubuntu16.04+python3.5情况下安装nltk,以及gensim时pip3安装不成功的解决办法...
- ibatis与spring的整合
- c 导入数据到oracle,excel中数据导入到Orcale数据库表中的方法 | 学步园
- github注册之后更新教程
- 三星上线售价99万8K电视 网友:是不是多打了一位数
- eclipse中ctrl+h默认打开是JavaSearch,怎么设置成默认打开是FileSearch
- python循环结构代码_Python --- 程序的循环结构
- 阿里开发规范_字字珠玑,高级技术专家带你了解阿里的开发流程规范
- DataBase -- Operator
- 计算机信息安全管理大作业,《信息安全大作业》.doc
- 118_网络编程_对IP、网络ID、主机ID、子网掩码、点分十进制的理解
- Finalize()、Dispose(bool disposing)和Dispose()的使用场景与对比
- php-ftm,关于KEA128中FTM0/1的问题
- 原价游戏太贵?爬取steam游戏优惠信息
- CPU/显卡GPU/CUDA/内存/缓存/SDK/API/DLL【转载整理】
- css背景图像属性_如何将CSS3转换应用于背景图像
- 怎么学计算机打字输入,如何学电脑打字?成为打字员
- (七) carla真实世界坐标系与全局俯视地图像素坐标系变换