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),一条 ...
随机推荐
- HDU1022 Train Problem I 栈的模拟
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1042 栈的模拟,题目大意是已知元素次序, 判断出栈次序是否合理. 需要考虑到各种情况, 分类处理. 常 ...
- C++ 单链表基本操作
链表一直是面试的高频题,今天先总结一下单链表的使用,下节再总结双向链表的.本文主要有单链表的创建.插入.删除节点等. 1.概念 单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数 ...
- extern 数组
最近比较关注C++对象的Linkage类型,然后今天突然想起extern数组这个奇葩的东西,稍微折腾了一下,顺手写个随笔. 首先在cpp中定义几个数组: ,,,,}; ,,,,}; ,,,,}; 然后 ...
- jQuery的toggle()的自动触发真烦人
jQuery的toggle()方法应该是在鼠标点击后才会触发,现在的问题是在ready加载后就自动触发了,怎么回事呢? 答案是jQuery的版本问题,在1.9以后的版本toggle()就存在这个问题, ...
- Oracle中Left join的on和where的效率差别
假设有两个表a.b 使用on Select * from a left join b on b.col = a.col and b.col2 = ‘aa’ 使用 where Select * from ...
- Hadoop上路-04_HBase0.98.0入门
以下操作在Hadoop分布式集群基础上进行. 一.分布式环境搭建 下载:)验证 3)修改%HBASE%/conf/hbase-env.sh 4)修改$HBASE_HOME/conf/hbase-sit ...
- node.js和socket.io纯js实现的即时通讯实例分享
在这个例子中,其实node.js并没有真正起到服务器的作用,因为我们这里可以直接运行client.html文件,而不用输入url请求,当 然,要想输入url请求页面内容还需要加入请求静态文件的代码.这 ...
- js关闭页面(兼容浏览器)
function closewindow() { window.opener = null; window.open("", "_self"); window. ...
- windows创建桌面快捷方式的VBA脚本
Dim wShell, oShortcut 'Dim strDesktop$ ' 为了与VBS兼容, Dim strDesktop ' 这里改写一下,测试通过... Set w ...
- Basic Vlan Concepts
1. Vlan Benefit ·To reduce CPU overhead on each device by reducing the number of devices that recei ...