HDU 1596 也是最小路径Dijkstra

 1 #include<cstdio>
 2 #include<cmath>
 3 #include<cstring>
 4 const int qq=1000+10;
 5 double dist[qq];
 6 double city[qq][qq];
 7 int vis[qq];
 8 int n,m;
 9 int s,e;
10 void Dijkstra()
11 {
12     double MAX;
13     int u;
14     for(int i=1;i<=n;++i){
15         vis[i]=0;
16         dist[i]=city[s][i];
17     }
18     vis[s]=1;
19     for(int l=2;l<=n;++l){
20         MAX=0;u=s;
21         for(int i=1;i<=n;++i)
22             if(!vis[i] && dist[i] > MAX)
23                 MAX = dist[u=i];
24         if(MAX==0)    break;
25         if(u==e)    break;
26         vis[u]=1;
27         for(int i=1;i<=n;++i)
28             if(!vis[i]){
29                 if(dist[i]<dist[u]*city[u][i])
30                     dist[i]=dist[u]*city[u][i];
31                 if(dist[i]<dist[u]*city[i][u])
32                     dist[i]=dist[u]*city[u][i];
33             }
34
35     }
36     if(u!=e)    printf("What a pity!\n");
37     else            printf("%.3lf\n",dist[e]);
38 }
39 int main()
40 {
41     while(~scanf("%d",&n)){
42         for(int j,i=1;i<=n;++i)
43             for(j=1;j<=n;++j)
44                 scanf("%lf",&city[i][j]);
45         scanf("%d",&m);
46         for(int i=0;i<m;++i){
47             scanf("%d %d",&s,&e);
48             Dijkstra();
49         }
50     }
51 } 

将原来的+换成*就行了、模板懂了这题就是水题了

时间: 2024-08-07 16:59:11

HDU 1596 也是最小路径Dijkstra的相关文章

hdu 1151 Air Raid 最小路径覆盖

Air Raid Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1151 Description Consider a town where all the streets are one-way and each street leads from one intersection to another. It is also known that starting

hdu 1151 Air Raid(最小路径覆盖)

Air Raid Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 3894    Accepted Submission(s): 2573 Problem Description Consider a town where all the streets are one-way and each street leads from on

hdu 1596 find the safest road(dijkstra||floyd)

find the safest road Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 8192    Accepted Submission(s): 2901 Problem Description XX星球有很多城市,每个城市之间有一条或多条飞行通道,但是并不是所有的路都是很安全的,每一条路有一个安全系数s,s是在 0 和 1

HDU 4862 Jump (最小K路径覆盖)

HDU 4862 Jump 链接:http://acm.hdu.edu.cn/showproblem.php?pid=4862 题意:给定一个N*M的矩阵,矩阵里面为0~9的数字.现在规定从一个点可以跳到它正下方和正右方的点,花费的费用为曼哈顿距离 - 1.如果在跳的过程中,两个点的数字相同,那么将得到该点的数字.规定可以从任意点开始跳,每个点只能经过1次.最多可以选择K个点来作为起点进行跳跃.问能否经过所有的点,如果可以,那么花费的费用是多少. 思路: 如果是最小路径覆盖,那么很容易构造图.但

hdu 3861 The King’s Problem (强连通+最小路径覆盖)

The King's Problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 1637    Accepted Submission(s): 600 Problem Description In the Kingdom of Silence, the king has a new problem. There are N cit

HDU 1151 Air Raid(最小路径覆盖 = 顶点数 - 最大匹配数)

Air Raid Problem Description Consider a town where all the streets are one-way and each street leads from one intersection to another. It is also known that starting from an intersection and walking through town's streets you can never reach the same

HDU 4160 最小路径覆盖

Dolls Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1040    Accepted Submission(s): 496 Problem Description Do you remember the box of Matryoshka dolls last week? Adam just got another box of

hdu 4862 KM算法 最小K路径覆盖的模型

http://acm.hdu.edu.cn/showproblem.php?pid=4862 选t<=k次,t条路要经过所有的点一次并且仅仅一次, 建图是问题: 我自己最初就把n*m 个点分别放入X集合以及Y集合,再求最优匹配,然后连样例都过不了,而且其实当时解释不了什么情况下不能得到结果,因为k此这个条件相当于没用上... 建图方法: 1.X集合和Y集合都放入n*m+k个点,X中前n*m个点和Y中前n*m个点之间,如果格子里的值相等,权就是(收益-耗费),不等就是(-耗费),因为要的是最大收益

HDU 4862 Jump(最小K路径覆盖)

输入一个n×m网格图,每个结点的值为0-9,可以从任意点出发不超过k次,走完每个点且仅访问每个结点一次,问最终的能量最大值.不可全部走完的情况输出-1. 初始能量为0. 而结点(x,y)可以跳跃到结点(x,y+dy)或(x+dx,y).消耗能量为跳跃前后结点的曼哈顿距离 - 1 .若跳跃前后的结点的值相等,能量加上那个值. 具体建图可以参考这里http://blog.sina.com.cn/s/blog_6bddecdc0102uy9g.html 最小K路径覆盖其实在之前是见过的打过的,不过这次