HDU1874 单源最短路经 dijkstra或者floyd

2023-11-02

#include<iostream>
using namespace std;
int map[205][205]; //保存道路信息 
int mark[205];	   //mark[i]==1 代表城市i被标星
int tolen[205];    //tolen[i]==x 代表起点城市到i城市的距离为x
 
void init(int X)//把数组初始化 
{
	for(int i=0;i<X;i++){
		mark[i]=0;
		tolen[i]=0xfffffff;
		for(int j=0;j<X;j++){
			if(i==j)map[i][j]=0; //自己到自己距离为0 
			else map[i][j]=0xfffffff; //其他的先默认无穷大 0xfffffff是int的最大值 
		}
	}
}
int main()
{
	int N,M;//如题 
	int city1,city2,road_len;//装输入数据 
	int from,to;//装输入数据 
	while(cin>>N>>M){
		init(N);//初始化 
		for(int i=0;i<M;i++){
			cin>>city1>>city2>>road_len;
			if(map[city1][city2]>road_len){//两个城市可能有多条路径,取最短
				map[city1][city2]=road_len;
				map[city2][city1]=road_len;//道路是双向的 
			}
			
		}
		cin>>from>>to;
		//dijkstra
		//用城市from初始化一些数据
		
		//dijkstra
		mark[from]=1;//起始点首先标星
		for(int i=0;i<N;i++){
			tolen[i]=map[from][i];//用起始点松弛tolen数组 
		}
		//从tolen数组找没被标记并且值最小的点,然后将它标星,用它松弛tolen数组 
		while(1){
			int which=-1;
			int which_len=0xfffffff;
			for(int i=0;i<N;i++){
				if(mark[i]==1)continue;
				if(which_len>tolen[i]){
					which_len=tolen[i];
					which=i;
				}
			} 
			if(which!=-1){ //如果仍然有可标点 开始用它松弛 
				mark[which]=1;//标记这个点 
				for(int i=0;i<N;i++){
					//注意map[which][i]为0xfffffff意味着which不可达i 
					if(mark[i]==0 &&map[which][i]!=0xfffffff &&tolen[i]>tolen[which]+map[which][i]){
						tolen[i]=tolen[which]+map[which][i];
						
					}
				} 
			}
			else
			{
				break;
			}
		}
		if(tolen[to]==0xfffffff)cout<<-1<<endl;
		else cout<<tolen[to]<<endl;
		
		//floyd
		/*for(int k=0;k<N;k++){ //用结点k松弛 
			for(int i=0;i<N;i++){
				for(int j=0;j<N;j++){
					if(map[i][k]+map[k][j]<map[i][j]){
						map[i][j]=map[i][k]+map[k][j];
					}
					
				}
			}
		}
		if(map[from][to]==0xfffffff)cout<<-1<<endl;
		else cout<<map[from][to]<<endl;*/
		
	}
	return 0;
}


 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HDU1874 单源最短路经 dijkstra或者floyd 的相关文章

随机推荐

  • dede后台-系统基本参数无法保存中文/显示空白

    dede后台 系统基本参数无法保存中文 显示空白解决办法 dede templets sys info htm里面搜索 htmlspecialchars row value 替换成 htmlspecialchars row value EN
  • C++—C++程序基础

    文章目录 1 数据类型 1 1 基本数据类型 1 2 字面值常量 1 3 左值和右值 1 4 引用与指针 2 基本输入输出 2 1 输出 2 2 输入 3 函数 3 1 内联函数 3 2 函数的重载 1 数据类型 1 1 基本数据类型 在C
  • 用c语言编写九九乘法表

    这个需要使用两重循环来实现 我们用i表示行 外面一层循环 for i 1 i lt 9 i 外循环 从第一行到第九行 第一步 输出该行的乘法式子 第二步 该行结束换行 我们只需要将中间2步补充完整即可 第二步换行比较简单 printf n
  • 1P+N

    1p n是什么意思 单极二线 就是 一个单片空气开关 和一个漏电保护模块组合在一起的开关 火线 零线一起进出组合开关 当漏电发生时漏电模块带动空气开关跳闸 火线和外网电断开 但是零线是不断开的
  • 公共子串计算

    h1 公共子串计算 h1
  • 双线macd指标参数最佳设置_mt5怎么添加双线macd?mt5中macd怎么设置快慢线?

    在mt4平台中怎么添加双线macd指标 的设置要求是这样的 将MACD的快速EMA参数设定为8 将慢速EMA参数设定 打开mt4 菜单栏选择 数据文件夹 mql4 indicator 将技术指标复制粘贴进去 然后关闭mt4重新打开 菜单栏
  • Android Studio打开XML文件Design显示Waiting for build to finish

    Android Studio打开XML文件Design显示Waiting for build to finish 项目编译完 Design的界面一直出现如下图所示情况 解决方法一 重构项目 按下 ctrl shift A 输入 Sync P
  • [spring处理webservice报文] 3 rest处理soap报文

    目录 1 背景 2 rest请求处理soap报文 2 1 创建controller 3 调试 1 背景 前面两篇讲解了spring处理soap报文的囧途 如下 这一篇讲解下spring如何通过post类型的请求来处理soap报文 sprin
  • rust的错误和异常

    一 错误和异常 在所有语言中 对程序运行不按照设计的 套路 出牌 都是错误 异常可以理解成程序的错误引发了运行的故障 甚至导致程序崩溃 正因为如此 对错误和异常的处理是所有语言都必须拥有的一个行为 无论是从语法层面还是从运行检查层面 都是无
  • 51单片机PWM输出

    PWM输出 学期快结束了 51单片机的学习也差不多告一段落 也快要转入新的学习阶段 寒假找个时间看看32 小白哈哈哈 下面是我学习51定时器弄出来的小东西 一个PWM的输出 还请大神指点 刚开始觉得PWM输出应该不难 很容易做的 但是后面越
  • Spring Boot使用Scheduled完成自动任务

    说明 Scheduled注解可以控制方法定时执行 其中有三个参数可选择 1 fixedDelay控制方法执行的间隔时间 是以上一次方法执行完开始算起 如上一次方法执行阻塞住了 那么直到上一次执行完 并间隔给定的时间后 执行下一次 2 fix
  • layui php phpexcel导出,Yii2 基于 layui 的 Excel 上传并导入数据(含分页)

    安装命令 composer require phpoffice phpexcel 引入layui包 我这里用的是2 4 5的版本 请自行下载对应版本 layui前台页面 导入文件 卡号信息 layui use form element up
  • 【python随笔】之【将doc、docx文件保存为txt文件】

    import win32com client def change word to txt word path save path print 读取中 word win32com client Dispatch Word Applicati
  • vector 操作

    C 内置的数组支持容器的机制 但是它不支持容器抽象的语义 要解决此问题我们自己实现这样的类 在标准C 中 用容器向量 vector 实现 容器向量也是一个类模板 标准库vector类型使用需要的头文件 include
  • 汇编语言笔记-keil5软件仿真及调试

    目录 keil5调试功能 软件仿真设置 硬件调试设置 调试方法 调试选项及介绍 调试窗口 Command Disassembly Symbols Registers Call Stack Locals Watch Memory Serial
  • 赶快进来!!!手把手教你贪吃蛇

    一 大体框架 这里和前面写过的游戏一样 大体框架都是这样 有个简要的目录 我们主要是对play 函数进行封装 由于我们引用了自己的头文件 game h 所以我们可以把所要引用的库函数的预处理指令都放在 game h 的头文件中 如果你细心的
  • Vue3中vuex的基本使用

    一 基本结构 src store index js中 代码如下 vue3中创建store实例对象的方法createStore 按需引入 import createStore from vuex export default createSt
  • pywt 安装学习

    安装 conda install c conda forge pywavelets github地址 里面有demo https github com PyWavelets pywt 这个是学习笔记 https blog csdn net
  • UPC--扑克牌

    题目描述 从一副含有n n 10000 张的扑克牌 显然每张扑克牌都不相同 中 分给m m 100 个人 第i个人得到ai 0 ai 100 张牌 求一共有几种分法 这个数可能非常大 请输出此数模10007后的结果 输入 第一行两个整数 为
  • HDU1874 单源最短路经 dijkstra或者floyd

    include