find the safest road

Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 9033    Accepted Submission(s): 3173

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
 
Recommend
8600   |   We have carefully selected several similar problems for you:  1217 1598 1142 1690 1385 
 

最短路变形,把求最小改成最大就可以。

注意在Q次询问中会发生权值改变,所以我们须要定义一个数组来保存权值,询问之前把值又一次赋给权值

#include <stdio.h>
#include <math.h>
#include <vector>
#include <queue>
#include <string>
#include <string.h>
#include <stdlib.h>
#include <iostream>
#include <algorithm>
#define INF 0x3f3f3f3f using namespace std; const int MAXN = 1010;
bool used[MAXN];
double d[MAXN];
double cost[MAXN][MAXN];
double a[MAXN][MAXN];
int N; void Dijkstra(int s)
{
for(int i=0;i<N;i++){
used[i]=false;
d[i]=0;
}
d[s]=1;
while(true){
int v=-1;
for(int i=0;i<N;i++)
if(!used[i]&&(v==-1||d[v]<d[i])) v=i;
if(v==-1) break;
used[v]=true;
for(int i=0;i<N;i++)
d[i]=max(d[i],d[v]*cost[v][i]);
}
}
int main()
{
while(scanf("%d",&N)!=EOF){
for(int i=0;i<N;i++){
for(int j=0;j<N;j++){
scanf("%lf",&a[i][j]);
//if(a[i][j]==0) a[i][j]=0;
}
}
int Q;
scanf("%d",&Q);
int s,g;
while(Q--){
//memcpy(cost,a,sizeof(a));//能够取代以下的for循环。可是耗时
for(int i=0;i<N;i++){
for(int j=0;j<N;j++)
cost[i][j]=a[i][j];
}
scanf("%d%d",&s,&g);
Dijkstra(s-1);
if(d[g-1]==0) printf("What a pity!\n");
else printf("%.3lf\n",d[g-1]);
}
}
return 0;
}

HDOJ find the safest road 1596【最短路变形】的更多相关文章

  1. hdoj 1596 find the safest road【最短路变形,求最大安全系数】

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

  2. 杭电 1596 find the safest road (最短路)

    http://acm.hdu.edu.cn/showproblem.php?pid=1596 这道题目与杭电2544最短路的思想是一样的.仅仅只是是把+改成了*,输入输出有些不一样而已. find t ...

  3. 杭电 1596 find the safest road (最小路径变形求最大安全度)

    Description XX星球有很多城市,每个城市之间有一条或多条飞行通道,但是并不是所有的路都是很安全的,每一条路有一个安全系数s,s是在 0 和 1 间的实数(包括0,1),一条从u 到 v 的 ...

  4. HDU 1596 最短路变形

    这道题怎么都是TLE,报警了,先放在这 http://acm.hdu.edu.cn/showproblem.php?pid=1596 #include <iostream> #includ ...

  5. HDU 1596 find the safest road (最短路)

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

  6. HDU.1596 find the safest road (Floyd)

    HDU.1596 find the safest road (Floyd) 题意分析 与普通的最短路不太相同,本题有些许的变化. 1. 要找到由i到j最安全的路,故在求解的时候要保证mp[i][j]尽 ...

  7. 杭电1596 find the safest road

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

  8. hdu 1596 find the safest road (最短路径)

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

  9. hdu 1596 find the safest road (变形SP && dij+heap)

    Problem - 1596 变形最短路问题,给出邻接矩阵,要求求出给定点对间安全率最大值. 这题可以用dijkstra+heap来做.对于每一个查询,做一次dij即可. 代码如下: #include ...

随机推荐

  1. 深刻理解Nginx之基本配置和升级(2)

    3 Nginx基本配置 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvam9obl9mX2xhdQ==/font/5a6L5L2T/fontsize/400 ...

  2. centos下yum安装lamp和lnmp轻松搞定

    centos下yum安装lamp和lnmp轻松搞定.究竟多轻松你看就知道了.妈妈再也不操心不会装lamp了. 非常辛苦整理的安装方法,会持续更新下去.凡无法安装的在评论里贴出问题来,会尽快解决.共同维 ...

  3. 并发编程网 - ifeve.com

    并发编程网 - ifeve.com 让天下没有难学的技术 首页 JAVA 深入浅出ClassLoader 深入浅出ClassLoader Dedicate to Molly. 你真的了解ClassLo ...

  4. c# 无法加载xxx.dll 找不到指定的模块(如何指定文件夹)

    如果直接放在项目运行目录,例如bin/debug可以直接加载,但是这样比较乱. 如果在放debug里面的一个文件夹里面,有可能会报错“无法加载xxx.dll 找不到指定的模块”. 如果路径写成这样就会 ...

  5. linux下安装redis3.2

    这部分来自网络: http://blog.csdn.net/cuibruce/article/details/53501532 1.下载 下载地址:http://www.redis.io/downlo ...

  6. 求区间连续不超过K段的最大和--线段树+大量代码

    题目描述: 这是一道数据结构题. 我们拥有一个长度为n的数组a[i]. 我们有m次操作.操作有两种类型: 0 i val:表示我们要把a[i]修改为val; 1 l r k:表示我们要求出区间[l,r ...

  7. ThinkPHP是什么

    ThinkPHP是什么 ThinkPHP是为了简化企业级应用开发和敏捷WEB应用开发而诞生的.最早诞生于2006年初,2007年元旦正式更名为ThinkPHP,并且遵循Apache2开源协议发布.Th ...

  8. 流式计算新贵Kafka Stream设计详解--转

    原文地址:https://mp.weixin.qq.com/s?__biz=MzA5NzkxMzg1Nw==&mid=2653162822&idx=1&sn=8c4611436 ...

  9. 使用最新vue_cli+webpack搭建的模版

    使用最新vue_cli+webpack搭建的模版,包含了常用的插件,router和axiox与测试插件.项目的结构如下: 框架下载地址:https://share.weiyun.com/5Cl7EbU

  10. FloatActionButton弹出菜单

    浮动按钮的弹出菜单动画 将几个按钮重叠摆放,使用ValueAnimator更新按钮的坐标实现. 布局 <FrameLayout android:layout_width="match_ ...