hdu 1596 find the safest road(最短路径,邻接矩阵)

2024-03-27 23:48

本文主要是介绍hdu 1596 find the safest road(最短路径,邻接矩阵),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题意:http://acm.hdu.edu.cn/showproblem.php?pid=1596

考验图论中的最短路径问题。需要做一点小小的处理,把原算法中的if(dist[j]>dist[k]+map[k][j])dist[j]=dist[k]+map[k][j];改成if(dist[j]<dist[k]*map[k][j])dist[j]=dist[k]*map[k][j];其他就没啥了。

#include <iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,i,j;
const int maxn=1005;
double map[maxn][maxn],dis[maxn],pre[maxn];
void Dijkstra(int s){bool tag[maxn];double mmax;int k;memset(tag,0,sizeof(tag));memset(dis,0,sizeof(dis));tag[s]=1;for(i=1;i<=n;i++){dis[i]=map[s][i];}for(i=1;i<n;i++){mmax=0;k=0;for(j=1;j<=n;j++){if(mmax<dis[j]&&!tag[j]&&dis[j]>0){k=j;mmax=dis[j];}}if(!k)return ;tag[k]=1;for(j=1;j<=n;j++){if(!tag[j]&&(dis[j]<map[k][j]*dis[k])){dis[j]=map[k][j]*dis[k];}}}
}
int main()
{//freopen("cin.txt","r",stdin);while(cin>>n){for(i=1;i<=n;i++){for(j=1;j<=n;j++){scanf("%lf\n",&map[i][j]);}}int q;scanf("%d",&q);for(int ix=0;ix<q;ix++){int a,b;scanf("%d%d",&a,&b);Dijkstra(a);double ans=dis[b];if(ans<1e-6)printf("What a pity!\n");else  printf("%.3lf\n",ans);}}return 0;
}

写的过程中,曾出现过一个神奇的现象,原来的主函数中第二个for循环是这样的:

for(i=0;i<q;i++){int a,b;scanf("%d%d",&a,&b);Dijkstra(a);double ans=dis[b];if(ans<1e-6)printf("What a pity!\n");else  printf("%.3lf\n",ans);}

结果每次没有输入q次a,b就跳出了循环,我下了身冷汗~原来是全局变量搞的鬼,调用Dijkstra函数后i的值被改变了。

这篇关于hdu 1596 find the safest road(最短路径,邻接矩阵)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/853803

相关文章

Linux修改pip和conda缓存路径的几种方法

《Linux修改pip和conda缓存路径的几种方法》在Python生态中,pip和conda是两种常见的软件包管理工具,它们在安装、更新和卸载软件包时都会使用缓存来提高效率,适当地修改它们的缓存路径... 目录一、pip 和 conda 的缓存机制1. pip 的缓存机制默认缓存路径2. conda 的缓

Linux find 命令完全指南及核心用法

《Linuxfind命令完全指南及核心用法》find是Linux系统最强大的文件搜索工具,支持嵌套遍历、条件筛选、执行动作,下面给大家介绍Linuxfind命令完全指南,感兴趣的朋友一起看看吧... 目录一、基础搜索模式1. 按文件名搜索(精确/模糊匹配)2. 排除指定目录/文件二、根据文件类型筛选三、时间

Windows系统下如何查找JDK的安装路径

《Windows系统下如何查找JDK的安装路径》:本文主要介绍Windows系统下如何查找JDK的安装路径,文中介绍了三种方法,分别是通过命令行检查、使用verbose选项查找jre目录、以及查看... 目录一、确认是否安装了JDK二、查找路径三、另外一种方式如果很久之前安装了JDK,或者在别人的电脑上,想

Python中Windows和macOS文件路径格式不一致的解决方法

《Python中Windows和macOS文件路径格式不一致的解决方法》在Python中,Windows和macOS的文件路径字符串格式不一致主要体现在路径分隔符上,这种差异可能导致跨平台代码在处理文... 目录方法 1:使用 os.path 模块方法 2:使用 pathlib 模块(推荐)方法 3:统一使

一文教你解决Python不支持中文路径的问题

《一文教你解决Python不支持中文路径的问题》Python是一种广泛使用的高级编程语言,然而在处理包含中文字符的文件路径时,Python有时会表现出一些不友好的行为,下面小编就来为大家介绍一下具体的... 目录问题背景解决方案1. 设置正确的文件编码2. 使用pathlib模块3. 转换路径为Unicod

MySQL9.0默认路径安装下重置root密码

《MySQL9.0默认路径安装下重置root密码》本文主要介绍了MySQL9.0默认路径安装下重置root密码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录问题描述环境描述解决方法正常模式下修改密码报错原因问题描述mysqlChina编程采用默认安装路径,

python获取当前文件和目录路径的方法详解

《python获取当前文件和目录路径的方法详解》:本文主要介绍Python中获取当前文件路径和目录的方法,包括使用__file__关键字、os.path.abspath、os.path.realp... 目录1、获取当前文件路径2、获取当前文件所在目录3、os.path.abspath和os.path.re

hdu2544(单源最短路径)

模板题: //题意:求1到n的最短路径,模板题#include<iostream>#include<algorithm>#include<cstring>#include<stack>#include<queue>#include<set>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#i

usaco 1.3 Mixing Milk (结构体排序 qsort) and hdu 2020(sort)

到了这题学会了结构体排序 于是回去修改了 1.2 milking cows 的算法~ 结构体排序核心: 1.结构体定义 struct Milk{int price;int milks;}milk[5000]; 2.自定义的比较函数,若返回值为正,qsort 函数判定a>b ;为负,a<b;为0,a==b; int milkcmp(const void *va,c

poj 3974 and hdu 3068 最长回文串的O(n)解法(Manacher算法)

求一段字符串中的最长回文串。 因为数据量比较大,用原来的O(n^2)会爆。 小白上的O(n^2)解法代码:TLE啦~ #include<stdio.h>#include<string.h>const int Maxn = 1000000;char s[Maxn];int main(){char e[] = {"END"};while(scanf("%s", s) != EO