find the safest road
find the safest road
Time Limit : 10000/5000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other)
Total Submission(s) : 23 Accepted Submission(s) : 12
#include<stdio.h>
#include<string.h>
#define MAX(x,y)(x>y?x:y)
const int MAXN=;
double map[MAXN][MAXN],d[MAXN];
int vis[MAXN];
int n;
void initial(){
memset(d,,sizeof(d));
memset(vis,,sizeof(vis));
}
void dijskra(int s){
initial();//写错位置了,应该每次都初始化
d[s]=;
while(true){
int k=-;
for(int i=;i<=n;i++)
if(!vis[i]&&(k==-||d[i]>d[k]))k=i;
if(k==-)break;
vis[k]=;
for(int i=;i<=n;i++)
d[i]=MAX(d[i],d[k]*map[k][i]);
}
}
int main(){int Q,a,b;
while(~scanf("%d",&n)){
memset(map,,sizeof(map));
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
scanf("%lf",&map[i][j]);
scanf("%d",&Q);
while(Q--){
scanf("%d%d",&a,&b);
dijskra(a);
if(d[b]==0.0)puts("What a pity!");
else printf("%.3lf\n",d[b]);
}
}
return ;
}
SPFA:
#include<stdio.h>
#include<string.h>
#include<queue>
using namespace std;
const int MAXN=;
const int MAXM=;
int head[MAXM],vis[MAXN];
double dis[MAXN];
struct Edge{
int from,to,next;
double value;
};
Edge edg[MAXM];
int n,edgnum;
queue<int>dl;
void initial(){
memset(dis,,sizeof(dis));
memset(vis,,sizeof(vis));
while(!dl.empty())dl.pop();
}
void add(int u,int v,double value){
Edge E;
E.from=u;E.to=v;E.value=value;E.next=head[u];
edg[edgnum]=E;
head[u]=edgnum++;
}
void SPFA(int sx){
initial();
dis[sx]=;
vis[sx]=;
dl.push(sx);
while(!dl.empty()){
int k=dl.front();
dl.pop();
vis[k]=;
for(int i=head[k];i!=-;i=edg[i].next){
int v=edg[i].to;
if(dis[k]*edg[i].value>dis[v]){
dis[v]=dis[k]*edg[i].value;
if(!vis[v])
dl.push(v),vis[v]=;
}
}
}
}
int main(){
int a,b,Q;
double v;
while(~scanf("%d",&n)){
memset(head,-,sizeof(head));
edgnum=;
for(int i=;i<=n;i++)
for(int j=;j<=n;j++){
scanf("%lf",&v);
add(i,j,v);
}
scanf("%d",&Q);
while(Q--){
scanf("%d%d",&a,&b);
SPFA(a);
if(dis[b]==0.0)puts("What a pity!");
else printf("%.3lf\n",dis[b]);
}
}
return ;
}
find the safest road的更多相关文章
- 杭电 1595 find the safest road
find the safest road Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
- hdoj 1596 find the safest road【最短路变形,求最大安全系数】
find the safest road Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
- hdu1569find the safest road(floyd变形求最大安全值)
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 ...
- HDU1596 find the safest road
find the safest road XX星球有很多城市,每个城市之间有一条或多条飞行通道,但是并不是所有的路都是很安全的,每一条路有一个安全系数s,s是在 0 和 1 间的实数(包括0,1),一 ...
- hdu1596find the safest road(floyd)
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 ...
- HDU.1596 find the safest road (Floyd)
HDU.1596 find the safest road (Floyd) 题意分析 与普通的最短路不太相同,本题有些许的变化. 1. 要找到由i到j最安全的路,故在求解的时候要保证mp[i][j]尽 ...
- HDU——1596find the safest road(邻接矩阵+优先队列SPFA)
find the safest road Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
随机推荐
- 我所不知道的 Chrome 开发者工具
http://www.oschina.net/translate/things-i-didnt-know-about-chrome-devtools 自打我开始进行Web开发后,我就一直将Firebu ...
- C 语言的可变参数表函数的设计
在c语言中使用变长参数最常见的就是下面两个函数了: int printf(const char *format, ...); int scanf(const char *format, ...); 那 ...
- How ASP.NET MVC Works?
原文地址:http://www.cnblogs.com/artech/archive/2012/04/10/how-mvc-works.html?ADUIN=7783008&ADSESSION ...
- 使用Mysql.data.dll文件在服务器上运行访问Mysql
我使用的这个Mysql.data.dll文件 web.config上面主要需要声明以下代码 <system.data> <DbProviderFactories> <ad ...
- 使用ObjectAnimator开发打开、关闭书本动画
动画效果 动画效果-分享链接 (想做成gif图的,尝试各种工具无果) ObjectAnimator简单介绍及实现思路 ObjectAnimator是从api level 11 (Android3.0x ...
- [每日一题] 11gOCP 1z0-052 :2013-09-19 创建用户...................................................B41
转载请注明出处:http://blog.csdn.net/guoyjoe/article/details/11834661 正确答案:BC 这道题比较简单,我就以答案来解析,如下来自官方文档创建用户的 ...
- 【floyed】【HDU1217】【Arbitrage】
题目大意: 给你几种货币,以及几种汇率关系,问是否存在套利的可能? 思路: 初步想法:图上存在一个环的路径上权值相乘大于1.... 再者:该如何找到图上所有环呢.... 好吧 经过鸟神 和 况神的指点 ...
- UVA 1569 Multiple
题意: 给定m个1位数字,要求用这些数字组成n的倍数的最小数字,如果无法组成就输出0 分析: BFS,由于n最大5000,余数最多5000,利用余数去判重,并记录下路径即可 代码: #include ...
- C++中socket编程
原文:http://blog.csdn.net/cuiran/article/details/5854794 Server端 #include <WINSOCK2.H> #include ...
- C#识别图片上的数字
通过Emgu实现对图片上的数字进行识别. 前期步骤: 1.下载Emgu安装文件,我的版本是2.4.2.1777.3.0版本则实现对中文的支持. 2.安装后需填写环境变量,环境变量Path值后加入Emg ...