find the safest road HDU杭电1596【Dijkstra || SPFA】
pid=1596">http://acm.hdu.edu.cn/showproblem.php?pid=1596
可是8600 的数学不好。想请你帮忙 ^_^
第一行:n。n表示城市的个数n<=1000;
接着是一个n*n的矩阵表示两个城市之间的安全系数,(0能够理解为那两个城市之间没有直接的通道)
接着是Q个8600要旅游的路线,每行有两个数字。表示8600所在的城市和要去的城市
其它的输出这两个城市之间的最安全道路的安全系数,保留三位小数。
3
1 0.5 0.5
0.5 1 0.4
0.5 0.4 1
3
1 2
2 3
1 3
0.500
0.400
0.500
SPFA
#include <cstdio>
#include <cstring>
#include <queue>
#define MAXN 1100
using namespace std; double map[MAXN][MAXN];
int vis[MAXN];//推断是否增加队列了
int num;
double low[MAXN];//存最短路径
int s, e;
int M, N;
void SPFA()
{
int i, j;
queue<int> Q;
memset(low, 0, sizeof(low));
memset(vis, 0, sizeof(vis));
vis[s] = 1;
low[s] = 1;
Q.push(s);
while(!Q.empty())
{
int u = Q.front();
Q.pop();
vis[u] = 0;//出队列了,不在队列就变成0
for(i = 1; i <= N; ++i)
{ if(low[i] < low[u] * map[u][i])
{
low[i] = low[u] * map[u][i];
if(!vis[i])
{
vis[i]=1;
Q.push(i);
}
}
}
}
if(low[e] == 0) printf("What a pity!\n");
else printf("%.3f\n",low[e]);
}
int main()
{
int u, v;
double w; while(~scanf("%d", &N))
{
num=0;
for(int i=1 ;i <= N; ++i)
{
for(int j=1; j <= N; ++j)
{
scanf("%lf",&w);
map[i][j]=w;
}
}
scanf("%d", &M);
while(M--)
{
scanf("%d%d", &s, &e);
SPFA();
} }
return 0;
}
Dijkstra
#include<stdio.h>
#include<string.h>
double map[1010][1010];
double dis[1010];
bool used[1010];
int n;
int i,j;
void dijkstra(int u)
{
memset(used,0,sizeof(used));
for(i=1;i<=n;++i)
dis[i]=0; int pos=u;
for(i=1;i<=n;++i)//第一次给dis赋值
{
dis[i]=map[u][i];
}
dis[u]=1;
used[u]=1;
for(i=1;i<n;++i)//再找n-1个点
{
double max=0;
for(j=1;j<=n;++j)
{
if(!used[j]&&max<dis[j])
{
max=dis[j];
pos=j;
}
}
used[pos]=1;
dis[pos]=max;
for(j=1;j<=n;++j)//把dis数组更新,也叫松弛
{
if(!used[j]&&dis[j]<map[pos][j]*dis[pos])
{
dis[j]=map[pos][j]*dis[pos];
}
}
}
}
int main()
{
int m;
double w;
int u,v;
while(~scanf("%d",&n))
{
for(i=1;i<=n;++i)
for(j=1;j<=n;++j)
{
scanf("%lf",&w);
map[i][j]=w;
} scanf("%d",&m);
while(m--)
{
scanf("%d%d",&u,&v);
dijkstra(u);
if(dis[v]==0) printf("What a pity!\n");
else
printf("%.3lf\n",dis[v]);
}
}
return 0;
} /*
3
1 0.5 0.5
0.5 1 0.2
0.5 0.2 1
3
1 2
2 3
1 3
*/
find the safest road HDU杭电1596【Dijkstra || SPFA】的更多相关文章
- 『ACM C++』HDU杭电OJ | 1415 - Jugs (灌水定理引申)
今天总算开学了,当了班长就是麻烦,明明自己没买书却要带着一波人去领书,那能怎么办呢,只能说我善人心肠哈哈哈,不过我脑子里突然浮起一个念头,大二还要不要继续当这个班委呢,既然已经体验过就可以适当放下了吧 ...
- 杭电 1596 find the safest road (最短路)
http://acm.hdu.edu.cn/showproblem.php?pid=1596 这道题目与杭电2544最短路的思想是一样的.仅仅只是是把+改成了*,输入输出有些不一样而已. find t ...
- 杭电1596 find the safest road
find the safest road Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
- 一个人的旅行 HDU杭电2066【dijkstra算法 || SPFA】
pid=2066">http://acm.hdu.edu.cn/showproblem.php? pid=2066 Problem Description 尽管草儿是个路痴(就是在杭电 ...
- 『ACM C++』HDU杭电OJ | 1418 - 抱歉 (拓扑学:多面体欧拉定理引申)
呕,大一下学期的第一周结束啦,一周过的挺快也挺多出乎意料的事情的~ 随之而来各种各样的任务也来了,嘛毕竟是大学嘛,有点上进心的人多多少少都会接到不少任务的,忙也正常啦~端正心态 开心面对就好啦~ 今天 ...
- 杭电 1596 find the safest road (最小路径变形求最大安全度)
Description XX星球有很多城市,每个城市之间有一条或多条飞行通道,但是并不是所有的路都是很安全的,每一条路有一个安全系数s,s是在 0 和 1 间的实数(包括0,1),一条从u 到 v 的 ...
- HDU Today HDU杭电2112【Dijkstra || SPFA】
http://acm.hdu.edu.cn/showproblem.php?pid=2112 Problem Description 经过锦囊相助,海东集团最终度过了危机,从此.HDU的发展就一直顺风 ...
- Choose the best route HDU杭电2680【dijkstra算法 || SPFA】
http://acm.hdu.edu.cn/showproblem.php?pid=2680 Problem Description One day , Kiki wants to visit one ...
- 畅通project续HDU杭电1874【dijkstra算法 || SPFA】
http://acm.hdu.edu.cn/showproblem.php?pid=1874 Problem Description 某省自从实行了非常多年的畅通project计划后.最终修建了非常多 ...
随机推荐
- C#-GC基础(待补充)
Finalize方法与Dispose方法区别 1. Finalize只释放非托管资源: 2. Dispose释放托管和非托管资源: // D 是神的天敌3. 重复调用Finalize和Dispose是 ...
- com.alibaba.fastjson.JSONPathException: expect '], but 'y'
今天遇到这样的一个错误 网上查找了各种资料,终于找到了报错的原因: String dataType = (String) JSONPath.eval(dataset.getSchema(), &quo ...
- scrapy研究探索(二)——爬w3school.com.cn
下午被一个问题困扰了好一阵.终于使用还有一种方式解决. 開始教程二.关于Scrapy安装.介绍等请移步至教程(一)(http://blog.csdn.net/u012150179/article/de ...
- bzoj3626【LNOI2014】LCA
3626: [LNOI2014]LCA Time Limit: 10 Sec Memory Limit: 128 MB Submit: 1266 Solved: 448 [Submit][Stat ...
- 大话设计模式C++实现-第17章-适配器模式
一.UML图 关键词:Client须要Request()函数,Adaptee提供的是SpecificRequest()函数,Adapter提供一个Request()函数将Adaptee和Specifi ...
- CCFlow的excel数据源导入Dtl明细表的操作方法以及模版demo
CCBPM支持通过excel向Dtl明细表(从表)导入数据. 以下,我们以cc的財务报销单demo流程解说详细的操作步骤和模版设计. 导入的操纵步骤: 1.流程发起后,在開始节点导入数据源,点击明细表 ...
- 怎样訪问pcie整个4k的配置空间
眼下用于訪问PCIe配置空间寄存器的方法须要追溯到原始的PCI规范. 为了发起PCI总线配置周期,Intel实现的PCI规范使用IO空间的CF8h和CFCh来分别作为索引和数据寄存器,这样的方法能够訪 ...
- iOS UI08_UITableView
(http://img.blog.csdn.net/20150808103801391) // // MainViewController.m // UI08_UITableView // // Cr ...
- JavaScript中Number常用属性和方法
title: JavaScript中Number常用属性和方法 toc: false date: 2018-10-13 12:31:42 Number.MAX_VALUE--1.79769313486 ...
- 前端模块化 | 解读JS模块化开发中的 require、import 和 export
本篇分为两个部分 第一部分:总结了ES6出现之前,在当时现有的运行环境中,实现"模块"的方式: 第二部分:总结了ES6出现后,module成为ES6标准,客户端实现模块化的解决方案 ...