[AHOI2002] 哈利·波特与魔法石

news2024/11/27 0:30:06

[AHOI2002] 哈利·波特与魔法石

  • 哈利·波特与魔法石
    • 题目描述
    • 输入格式
    • 输出格式
    • 样例
      • 样例输入
      • 样例输出
  • 解题思路
  • AC 代码

在这里插入图片描述

哈利·波特与魔法石

题目描述

在这里插入图片描述
在这里插入图片描述

输入格式

文件中第一行有七个数,分别是 S1、 S2 、 …、 S7 ;第二行有两个数,依次分别是起点城市 i 和终点城市 j ;第三行有一个正整数 c ,c<=10000, 表示随后的 c 行中每行存放了一对能直接通达的城市的信息。 能直接通达的城市的信息由三个数组成, 依次分别是两个城市的编号和这两个城市之间的地形。城市的编号都是不超过 100 的正整

数, 但是各个城市的编号未必连续。 文件里同一行中相邻的两个数都是用一个空白字符隔开的。

输出格式

以一行的形式输出起点城市i 与终点城市 j 之间的最快路线所需要的时间。

样例

样例输入

0 1 0 0 0 0 0
1 4
4
1 2 1
1 3 1
2 4 2
3 4 3

样例输出

5

解题思路

读地后发现,此题只是一个简单的最短路,使用迪克斯特拉算法即可简单解决:

迪杰斯特拉算法是一种用于解决单源最短路径问题的经典算法。它由荷兰计算机科学家艾兹赫尔·迪杰斯特拉于 1956 1956 1956年提出,被广泛应用于网络路由、交通规划、电信网络等领域。

该算法的目标是找到从给定源节点到所有其他节点的最短路径。它通过逐步扩展路径的方式来实现这一目标。算法的基本思想是,从源节点开始,逐步选择当前路径上最短的节点,并更新与该节点相邻的节点的距离。通过不断迭代,最终得到从源节点到所有其他节点的最短路径。

具体来说,迪杰斯特拉算法包含以下步骤:

  1. 初始化:将源节点的距离设置为 0 0 0,将所有其他节点的距离设置为无穷大。

  2. 选择当前路径上距离最短的节点,并标记该节点为已访问。

  3. 更新距离:对于当前节点的所有邻居节点,计算通过当前节点到达邻居节点的距离,并与邻居节点的当前距离进行比较。如果通过当前节点到达邻居节点的距离更短,则更新邻居节点的距离。

  4. 重复步骤 2 2 2和步骤 3 3 3,直到所有节点都被访问过或者没有可达节点为止。

最终得到从源节点到所有其他节点的最短路径。

迪杰斯特拉算法的时间复杂度为 O ( V 2 ) O(V^2) O(V2),其中V表示节点的数量。然而,通过使用优先队列等数据结构,可以将时间复杂度优化到 O ( ( V + E ) l o g V ) O((V+E)logV) O((V+E)logV),其中E表示边的数量。

迪杰斯特拉算法的优点是能够处理带有非负权重的图,并且对于稠密图效果较好。然而,该算法无法处理带有负权重的图,且在处理稀疏图时可能效率较低。

总之,迪杰斯特拉算法是一种经典的用于解决单源最短路径问题的算法,通过逐步扩展路径并更新节点的距离,找到从源节点到所有其他节点的最短路径。它在网络路由、交通规划等领域有着广泛的应用。

AC 代码

#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
int a[300][300],d[300],v[300],h[10]={0,2,6,4,8,6,10,14},s,t,u,k,m,n,x,y,z,minn;
int main()
{
	memset (a,0x3f,sizeof(a));
	memset (d,0x3f,sizeof(d));
	for (int i=1;i<=7;i++)
	{
		cin >>u;
		if (u)
			h[i]/=2;
	}
	cin >>s >>t >>m;
	for (int i=1;i<=m;i++)
	{
		cin >>x >>y >>z;
		a[x][y]=a[y][x]=h[z];
	}
	for (int i=1;i<=100;i++)
		a[i][i]=0,d[i]=a[s][i];
	v[s]=1;
	for (int i=1;i<=100;i++)
	{
		k=0; minn=d[0];
		for (int j=1;j<=100;j++)
			if (v[j]==0 and d[j]<minn)
			{
				minn=d[j];
				k=j;
			}
		v[k]=1;
		for (int j=1;j<=100;j++)
			if (d[j]>d[k]+a[k][j] and v[j]==0)
				d[j]=d[k]+a[k][j];
	}
	cout <<d[t];
	return 0; 
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/858797.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络知识面试题

一、TCP 和 UDP 的区别 我们一句话概率区别就TCP 是有连接的可靠传输&#xff0c;UDP 是无连接的不可靠传输。 1、TCP 在传输数据时需要先建立连接&#xff0c;UDP 不需要 2、TCP 传输的数据包比较复杂&#xff0c;UDP 传输的数据包比较简单 3、TCP 使用确认应答机制、超时重传…

通过Python模拟计算附近WIFI密码,没有我蹭不到的网

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 今天来分享一下如何通过 Python 脚本实现 WIFI 密码的自动猜解 无图形界面 先来看看怎么实现没有图形界面版的自动猜解。 WIFI猜解 导入模块 import pywifi from pywifi import const import time import datetime测试连…

ejbca:8443报文跟踪

安装客户端证书后&#xff0c;访问管理员页面 :8443/ejbca/adminweb 同时在wireshark抓包 1、客户端向对端发出Client hello 在Server Hello看到一个颁发给客户端的证书&#xff0c;颁发给5be85c9c1df9&#xff08;客户端node hostname 5be85c9c1df9&#xff09;但没有在Clie…

ROS机器人操作系统Catkin的编译与常用命令的使用介绍

ROS中命令有很多&#xff0c;对一些频繁使用的常见命令&#xff0c;做一个整理&#xff0c;这些命令在平时操作机器人当中都是常用到的&#xff0c;也是在ROS中如何让机器人正常运作的必备知识。 尤其是对包进行编译时&#xff0c;熟悉CMake的朋友来说会很简单&#xff0c;在R…

方法重载和方法重写

方法的重载 Overload 对于功能类似的方法&#xff0c;因为参数列表不一样&#xff0c;却需要记住那么多不同的方法名称&#xff0c;太麻烦。多个方法的名称一样&#xff0c;但是参数列表不一样。&#xff08; 同名不同参 &#xff09; 方法重载与下列因素相关&#xff1a; 参…

Java正确的错误捕获姿态

理论概述 在Java中&#xff0c;捕获异常并且合理地处理或抛出异常是编写健壮和可靠代码的关键部分。但是有时候我们可能会对各种错误的捕获方法有点模棱两可&#xff0c;不知道怎么合适的去使用&#xff0c;这里作为基础知识我们做一个回顾巩固&#xff01;只有正确的开发方法…

原生js发送ajax请求---ajax请求篇(一)

在原生js中我们使用的是XMLHttpRequest对象来发送ajax请求 主要步骤就是&#xff1a; 1.创建XMLHTTPRequest对象 2.使用open方法设置和服务器的交互信息 3.设置发送的数据&#xff0c;开始和服务器端交互 4.注册事件 5.更新界面 &#xff08;1&#xff09; get方式 //步骤一…

Java自学网站推荐,专业教学快速提升

Java自学网站可以是学习Java的有用资源之一。它们通常提供了丰富的教学材料、在线课程、编程练习和实例项目&#xff0c;帮助初学者系统地学习Java编程语言和相关技术。 动力节点是一家专业的Java培训机构&#xff0c;他们提供在线视频学习平台&#xff0c;你可以参考他们的官方…

在用的二手电动汽车,雨季时,要注意保养哪些地方?

二手电动汽车在雨季的保养有一些特别需要注意的地方。首先&#xff0c;你要确保你的车子有足够的防水措施。电动汽车的电池组和控制系统通常都装在车辆底部&#xff0c;而这些部分是最怕水的。如果这些部分进水&#xff0c;可能会导致严重的电气故障&#xff0c;甚至可能会引起…

多语言B2B2C跨境购物平台无货源商品库搭建(全开源)

要搭建一个多语言B2B2C跨境购物平台&#xff0c;需要以下几个步骤&#xff0c;包括商品库的搭建、网站基础架构、多语言支持、订单管理、会员管理、营销推广、物流配送和支付接口集成。 1. 商品库的搭建 首先需要建立一个商品库&#xff0c;包括商品的名称、描述、价格、图片…

3理解图像本质-AI-python

下载Jupyter Lab 代码如下&#xff1a; import numpy as np //导入包 import matplotlib.pyplot as plt //为了显示图片要导入另一个图 %matplotlib inline //显示图片防止出错&#xff0c;在行内显示 from PIL import Image //读取图片 img Image.open(E:/ANCONDA/AI_Pyth…

Web前端之NodeJS、Vue

文章目录 一、Babel转码器1.1 Babel安装流程1.2 Babel命令行转码 二、Promise对象三、测试方式四、Vue&#xff08;渐进式JS框架&#xff09;4.1 准备4.2 创建一个项目4.3 运行一个项目 五、模板语法5.1 文本5.2 原始html5.3 属性Attribute5.4 使用JavaScript表达式 六、条件渲…

数据结构与算法基础-学习-28-图之拓扑排序

一、相关概念 名称描述有向无环图无环的有向图&#xff0c;简称DAG图&#xff08;Directed Acycline Graph&#xff09;,通常用来描述一个工程或系统的进行过程。AOV网用一个有向图表示一个工程的各子工程及其相互制约的关系&#xff0c;其中顶点表示活动&#xff0c;弧表示活…

paddleseg数据集自定义比例划分为测试集test.txt,训练集train.txt,验证集val.txt

将语义分割的数据集标注好后如下所示&#xff1a; 整理好图片和标签文后需要按照比例划分为训练集&#xff0c;验证集&#xff0c;测试集。 具体划分代码见下&#xff1a; import glob import os.path import argparse import warnings import numpy as npdef parse_args():p…

数组对象去重的几种方法

场景&#xff1a; let arrObj [{ name: "小红", id: 1 },{ name: "小橙", id: 1 },{ name: "小黄", id: 4 },{ name: "小绿", id: 3 },{ name: "小青", id: 1 },{ name: "小蓝", id: 4 } ]; 方法一&#xff1a;…

Leetcode.1289 下降路径最小和 II

题目链接 Leetcode.1289 下降路径最小和 II rating : 1697 题目描述 给你一个 n x n 整数矩阵 g r i d grid grid &#xff0c;请你返回 非零偏移下降路径 数字和的最小值。 非零偏移下降路径 定义为&#xff1a;从 g r i d grid grid 数组中的每一行选择一个数字&#xff…

matplotlib/seaborn 笔记:mpld3 让图像可交互

只需要一行代码 mpld3.display()/mpld3.enable_notebook() 即可让 matplotlib/sdeaborn画的图有交互性 import numpy as np import matplotlib.pyplot as plt import mpld3xnp.random.random(1000) ynp.random.random(1000)plt.hist2d(x,y,bins(100,100)) mpld3.enable_noteboo…

国产芯力特SIT1024QHG四通道本地互联网络(LIN)收发器,可替代TJA1024HG

SIT1024Q 是一款四通道本地互联网络&#xff08;LIN&#xff09;物理层收发器&#xff0c;符合 LIN 2.0、LIN 2.1、LIN 2.2、 LIN 2.2A 、 ISO 17987-4:2016 (12V) 和 SAE J2602 标准。主要适用于使用 1kbps 至 20kbps 传输速 率的车载网络。 SIT1024Q 通过 TXDx 引…

聊聊低代码的本质,是应用开发的未来吗?

聊聊低代码的本质&#xff0c;是应用开发的未来吗&#xff1f; 一、前言 二、什么是低代码以及功能特点&#xff1f; 什么是低代码开发&#xff1f; 低代码平台的特点和功能 三、低代码的本质是什么&#xff1f; 四、优秀且低调的低代码平台 五、结论 一、前言 低代码开发是近年…

当管理多个项目面临这些挑战时,怎样才能不翻车?

企业越发展&#xff0c;同时进行的项目就越多。管理工作量、跟踪截止日期以及了解优先顺序也变得更复杂了。在此过程中&#xff0c;多项目管理通常面临4个常见挑战。 1. 优先事项不明确或相互冲突 无论你的项目计划多么严谨&#xff0c;事情也不可能总是按照预期进行。在管理单…