hdoj 1596 find the safest road
题目传送:http://acm.hdu.edu.cn/showproblem.php?pid=1596
分析:Dijkstra变体,最短路径判断计算方式:Safe(P) = s(e1)*s(e2)…*s(ek) e1,e2,ek是P 上的边。 判断方式:lowcost[pre]*cost[pre][j]>lowcost[j]
代码:
//2013-10-30 10:54:06 Accepted 1596 1484MS 9788K 1836 B C++ 空信高手
#include <iostream>
#include <iomanip>
using namespace std; /*==================================================*\
| Dijkstra 数组实现O (N^2 )
| Dijkstra --- 数组实现( 在此基础上可直接改为STL 的Queue实现)
| lowcost[] --- beg 到其他点的最近距离
| path[] -- beg为根展开的树,记录父亲结点
\*==================================================*/
const int N=;
int path[N],vis[N];
double cost[N][N],lowcost[N];
void Dijkstra(int n,int beg)
{
int i,j;
double max;
memset(vis,,sizeof(vis));
vis[beg]=;
for(i=; i<n; i++)
{
lowcost[i]=cost[beg][i];
path[i]=beg;
}
lowcost[beg]=;
path[beg]=-;
int pre=beg;
for(i=; i<n; i++)
{
max=;
for(j=; j<n; j++)
//下面的加法可能导致溢出,INF不能取太大
if(vis[j]==&&lowcost[pre]*cost[pre][j]>lowcost[j])
{
lowcost[j]=lowcost[pre]*cost[pre][j];
path[j]=pre;
}
for(j=; j<n; j++)
if(vis[j]==&&lowcost[j]>max)
{
max=lowcost[j];
pre=j;
}
vis[pre]=;
}
} int main()
{
// freopen("input.txt","r",stdin);
int n,m,i,j,a,b;
while(scanf("%d",&n)!=EOF&&n)
{
memset(cost,,sizeof(cost));
memset(lowcost,,sizeof(lowcost));
for(i=; i<n; i++)
for(j=; j<n; j++)
cin>>cost[i][j];
cin>>m;
while(m--)
{
cin>>a>>b;
Dijkstra(n,a-);
if(lowcost[b-]!=)cout<<setiosflags(ios::fixed)<<setprecision()<<lowcost[b-]<<endl;
else cout<<"What a pity!"<<endl;
}
}
return ;
}
hdoj 1596 find the safest road的更多相关文章
- hdoj 1596 find the safest road【最短路变形,求最大安全系数】
find the safest road Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
- HDU.1596 find the safest road (Floyd)
HDU.1596 find the safest road (Floyd) 题意分析 与普通的最短路不太相同,本题有些许的变化. 1. 要找到由i到j最安全的路,故在求解的时候要保证mp[i][j]尽 ...
- 杭电 1596 find the safest road (最短路)
http://acm.hdu.edu.cn/showproblem.php?pid=1596 这道题目与杭电2544最短路的思想是一样的.仅仅只是是把+改成了*,输入输出有些不一样而已. find t ...
- HDU 1596 find the safest road (最短路)
find the safest road Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
- hdu 1596 find the safest road (最短路径)
find the safest road Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
- 杭电1596 find the safest road
find the safest road Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
- hdu 1596 find the safest road
http://acm.hdu.edu.cn/showproblem.php?pid=1596 #include <cstdio> #include <cstring> #inc ...
- hdu 1596 find the safest road (变形SP && dij+heap)
Problem - 1596 变形最短路问题,给出邻接矩阵,要求求出给定点对间安全率最大值. 这题可以用dijkstra+heap来做.对于每一个查询,做一次dij即可. 代码如下: #include ...
- hdoj 1596 find the safest rode
Problem Description XX星球有很多城市,每个城市之间有一条或多条飞行通道,但是并不是所有的路都是很安全的,每一条路有一个安全系数s,s是在 0 和 1 间的实数(包括0,1),一条 ...
随机推荐
- J2EE5(Servlet2.5)对EL表达式的支持
JAVA EE5默认 支持EL表达式. 办法一:在每个jsp文件的最上方加入以下代码: <%@ page language="java" import="java. ...
- hibernate结合使用gson转换json中一点看法
转发请注明出处:http://www.cnblogs.com/shizhongtao/p/3680216.html 在前后台的交互中,经常需要把bean对象与xml或者json,这里就把自己以前遇到的 ...
- IC卡的逻辑卡号和市民卡卡号
CPU卡,IC卡等的卡号与卡在出厂时的卡号.
- HDU 2571
设 d[ i ][ j ] 表示走到坐标为(i, j)的格子时最大的幸运值.初始化:dp[i][j]的第0行和第0列初始化为负的无穷大... #include <stdio.h> #inc ...
- 探索VS中C++多态实现原理
引言 最近把<深度探索c++对象模型>读了几遍,收获甚大.明白了很多以前知其然却不知其所以然的姿势.比如构造函数与拷贝构造函数什么时候被编译器合成,虚函数.实例函数.类函数的区别等等.在此 ...
- java8个基本类型和它们所占的字节数
byte : 1字节 short : 2字节 int : 4字节 float :4字节 long : 8字节 double : 8字节 char :2字节 boolean : 1字节 补充说明:在实际 ...
- Arduino CNC Shiled 和 DRV8825驱动板的注意事项
首先说明硬件:1) Arduino CNC Shiled V2.6 2)DRV8825驱动板 3)光驱步进电机 4)Arduino uno R3 下图是本次主角是Arduino CNC Shile ...
- cadence16.3破解方法
今天安装cadence16.3,安装了两遍都失败了,百思不得其解,结果总是出现在license上,如下图所示: 后面当然就只能启动demo版了,于是网上找,参照以前古老的法子,终于解决问题! 首先,开 ...
- iOS程序的生命周期
任何程序的生命周期都是指程序加载到程序结束这一段时间. 在iOS应用程序中,通过单击主页面上的图标的方式可以启动一个程序.单击后,系统会显示一个过渡界面,然后调用main()函数来加载程序.从这一刻开 ...
- VS2012中进行Web性能和负载测试
问题1:无法使用ie进行录制 解决方法: 工具 >> 管理加载项 >> 在工具栏和扩展中找到发布者为Microsoft Corporation的Microsoft Web Te ...