【数据结构】C : 追星

C : 追星

文章目录

  • C : 追星
    • Description
    • Input
    • Output
    • Sample
      • Input
      • Output
    • 解题思路
    • AC代码:

Description

城市总共有N座。yintama是右京女神的狂热粉,当他得知右京女神将要在城市N举办演唱会的时候,马上开始准备动身前往城市N。原本他可以直接乘飞机直达城市N,然而贫穷使他屈服,他必须选择总花费最少的那条路径。
设总共有N座城市(2<=N<=1000),城市编号分别为1,2,3……N。M条航线(1<=M<=2000),每条航线连接两座城市,相互可以到达(无向的)。
yintama目前在身在城市1,求最后yintama参加右京女神演唱会所需要的最少花费。(PS:重边考虑一下?)

Input

有多组输入。
第一行输入一个N、M,代表城市的总数,以及航线的总数。
接下来M行,每行输入三个数字u v w,代表城市u、v之间存在航线,机票花费为w。

Output

每行输出一个数,代表yintama参加右京女神演唱会所需的最少花费。

Sample

Input

5 5
1 2 20
2 3 30
3 4 20
4 5 20
1 5 100

Output

90

解题思路

这道题目是一个图论的单源最短路径,可以通过Dijkstra算法来求解。关键在于找到从起始城市(城市1)到目的城市(城市N)的最短路径(这道题是指钱)。

  1. 理解问题

    • 有N个城市和M条航线。
    • 每条航线连接两个城市,并有一个与之相关的机票花费(权重)。
    • 需要从城市1出发,到达城市N,使得总花费最小。
  2. 数据结构选择

    • 使用一个二维数组来表示城市之间的航线和对应的花费。数组的大小为N×N,其中graph[i][j]表示从城市i到城市j的机票花费。
  3. 处理重边

    • 如果有多条航线连接同一对城市,只保留花费最小的那条。这意味着在读取输入时,需要更新二维数组中的值,只保留最小的花费。
  4. 使用Dijkstra算法

    【数据结构】B : DS图应用–最短路径

  5. 输出结果

    • 最终距离数组中的distance[N-1](因为数组是从0开始计数的)就是从城市1到城市N的最小花费。
  6. 注意点:无向图,处理重边,可以不使用last数组记录上节点

AC代码:

#include<iostream>
#include<climits>
using namespace std;// 我会写两份代码
void Dijkstra(int** graph, int n) {int* distance = new int[n];bool* fixed = new bool[n];// 预处理for (int i = 0; i < n; i++) {distance[i] = INT_MAX;fixed[i] = false;}distance[0] = 0;for (int count = 0; count < n - 1; count++) {int min = INT_MAX, min_index;// 找最小目前最短的及其下标for (int v = 0; v < n; v++)if (!fixed[v] && distance[v] <= min)min = distance[v], min_index = v;fixed[min_index] = true;for (int v = 0; v < n; v++)if (!fixed[v] && graph[min_index][v] && distance[min_index] != INT_MAX && distance[min_index] + graph[min_index][v] < distance[v])distance[v] = distance[min_index] + graph[min_index][v];}cout << distance[n - 1] << endl;delete[] distance;delete[] fixed;
}int main() {int n, m;cin >> n >> m;int** graph = new int* [n];for (int i = 0; i < n; i++)graph[i] = new int[n];for (int i = 0; i < n; i++)for (int j = 0; j < n; j++)graph[i][j] = 0;for (int i = 0; i < m; i++) {int a, b, c;cin >> a >> b >> c;if (graph[a - 1][b - 1] == 0 || c < graph[a - 1][b - 1]) {graph[a - 1][b - 1] = c;graph[b - 1][a - 1] = c;}}Dijkstra(graph, n);for (int i = 0; i < n; i++)delete[] graph[i];delete[] graph;
}

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

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

相关文章

738. Monotone Increasing Digits 968. Binary Tree Cameras

738. Monotone Increasing Digits An integer has monotone increasing digits单调递增数字 if and only if each pair of adjacent digits x and y satisfy x < y. Given an integer n, return the largest number that is less than or equal to n with monotone increa…

TypeScript 学习笔记 第三部分 贪吃蛇游戏

尚硅谷TypeScript教程&#xff08;李立超老师TS新课&#xff09; 1. 创建开发环境 创建工程&#xff0c;使用学习笔记的第二部分安装css部分 npm i -D less less-loader css-loader style-loader对css部分处理&#xff0c;能够运行在低版本浏览器 npm i -D postcss postcss…

oracle rac 19c修改不同网段public ip

客户需求将才搭建的oracle 19.19数据库从192.168.168.0网段调整到192.168.213网段 1.停止两个节点集群 停止之前最好ocrdump一下&#xff0c;防止有问题 crsctl stop crs 2.修改public ip地址和/etc/hosts 3. 启动crs 这时集群可以启动&#xff0c;但是上面的一些资源启动会…

音色逼真、韵律自然的AI人声克隆限时福利!

声音&#xff0c;为数字人注入灵魂。 2023云栖大会上&#xff0c;阿里云视频云接受了CCTV-2财经频道的采访&#xff0c;分享并演示了如何利用云端智能剪辑&#xff0c;一站式完成数字人渲染及视频精编二创。 正如视频开头所呈现的AI重现演员“原声”&#xff0c;近年来&#x…

基于SpringBoot的图书管理系统

基于SpringBoot的图书管理系统 图书管理系统开发技术功能模块代码结构数据库设计运行截图源码获取 图书管理系统 开发技术 技术&#xff1a;SpringBoot、MyBatis-Plus、MySQL、Beetl、Layui。 框架&#xff1a;基于开源框架Snowy-Layui开发。 工具&#xff1a;IDEA、Navicat等…

【Linux】进程间通信——进程间通信的介绍和分类、管道、匿名管道、命名管道、匿名管道与命名管道的区别

文章目录 进程间通信1.进程间通信的介绍1.1目的和发展 2.进程间通信分类3.管道3.1匿名管道3.1.1匿名管道的原理&#xff08;文件角度&#xff09;3.1.2匿名管道的原理&#xff08;内核角度&#xff09;3.1.3管道读写规则3.1.4管道特点 3.2命名管道3.2.1创建命名管道3.2.2命名管…

PTA-列出所有祖先结点

对于给定的二叉树&#xff0c;本题要求你按从上到下顺序输出指定结点的所有祖先结点。 输入格式: 首先第一行给出一个正整数 N&#xff08;≤10&#xff09;&#xff0c;为树中结点总数。树中的结点从 0 到 N−1 编号。 随后 N 行&#xff0c;每行给出一个对应结点左右孩子的…

谈思生物医疗直播 | 利用类器官模型研究肺的发育与稳态

类器官是一种三维细胞培养物&#xff0c;其在细胞类型&#xff0c;空间结构及生理功能上能够模拟对应器官&#xff0c;从而提供一个高度生理相关的系统。自2009年小肠类器官首次建立至今&#xff0c;类器官研究已经延伸到多个组织系统&#xff0c;并成为当下生命科学领域最热门…

element plus 使用细节

菜鸟一直在纠结这个写不写&#xff0c;因为不难&#xff0c;但是菜鸟老是容易忘记&#xff0c;虽然想想或者搜搜就可以马上写出来&#xff0c;但是感觉每次那样就太麻烦了&#xff0c;不如一股做气写了算了&#xff0c;后面遇见别的就再来补充&#xff01; 文章目录 table 表格…

美创获IDC数据库安全市场代表厂商推荐,一路引领数据库安全

近日&#xff0c;全球领先的IT市场研究和咨询公司IDC发布《IDC Persepctive&#xff1a;中国数据库安全市场洞察&#xff0c;2023》报告。 凭借多年的技术积累和丰富的产品体系与行业实践&#xff0c;美创科技获「代表厂商」推荐&#xff0c;再次彰显专业领先能力&#xff01; …

Mybatis一级缓存和二级缓存原理剖析与源码详解

Mybatis一级缓存和二级缓存原理剖析与源码详解 在本篇文章中&#xff0c;将结合示例与源码&#xff0c;对MyBatis中的一级缓存和二级缓存进行说明。 MyBatis版本&#xff1a;3.5.2 文章目录 Mybatis一级缓存和二级缓存原理剖析与源码详解⼀级缓存场景一场景二⼀级缓存原理探究…

责任链模式 (Chain of Responsibility Pattern)

定义 责任链模式是一种行为型设计模式&#xff0c;用于在对象间建立一条处理请求的链。它允许多个对象有机会处理请求&#xff0c;从而减少请求的发送者和接收者之间的耦合。在责任链模式中&#xff0c;每个接收者包含对另一个接收者的引用&#xff0c;形成一条链。如果一个对…

tcp和 udp区别

相同点&#xff1a;都是传输层协议 不同点 是否面向连接 tcp:面向连接 三次握手&#xff0c;四次挥手端对端连接全双工通信&#xff08;允许双端同时收发数据&#xff09; udp:无连接 无三次握手&#xff0c;四次挥手支持一对一,一对多&#xff0c;多对多 数据传输方式 …

Linux平台下使用.NET Core访问Access数据库

运行环境 操作系统&#xff1a;Ubuntu 22.04.3 LTS (Jammy)开发工具&#xff1a;Visual Studio 2022 (17.8.0)运行时版本&#xff1a;.NET Runtime 8.0依赖库&#xff1a;unixodbc、mdbtools、odbc-mdbtools 依赖库安装 apt-get update sudo apt-get install unixodbc mdbto…

部署项目时常用的 Linux 命令

目录 1 前言2 SSH登录命令3 SCP传输命令4 CP拷贝命令5 MV移动命令6 TAR解压命令7 DU查看文件夹/文件大小8 TAIL查看日志9 NOHUP后台运行10 结语 1 前言 在应用部署过程中&#xff0c;Linux命令是必不可少的工具。它们能够帮助我们管理文件、连接服务器、拷贝文件、查看日志以及…

vite项目配置vite.config.ts在打包过程中去除日志

在生产环境上&#xff0c;务必要将日志清除干净&#xff0c;其因有二&#xff0c;在webgis系统中&#xff0c;有很多几何数据&#xff0c;体积大、数量多&#xff0c;很容易引起系统卡顿&#xff1b;清除log后&#xff0c;系统看着舒服&#xff0c;协同开发有很多无聊的日志&am…

生日礼物——华为机考真题

题目描述 小牛的孩子生日快要到了&#xff0c;他打算给孩子买蛋糕和小礼物&#xff0c;蛋糕和小礼物各买一个&#xff0c; 他的预算不超过x元。蛋糕 Cake 和小礼物 gift 都有多种价位的可供选择。 请返回小牛共有多少种购买方案。 输入描述 第一行表示 Cake的单价, 以逗号分隔 …

字符串:leetcode1410. HTML 实体解析器

1410. HTML 实体解析器 「HTML 实体解析器」 是一种特殊的解析器&#xff0c;它将 HTML 代码作为输入&#xff0c;并用字符本身替换掉所有这些特殊的字符实体。 HTML 里这些特殊字符和它们对应的字符实体包括&#xff1a; 双引号&#xff1a;字符实体为 &quot; &#xff…

一款非常优秀的项目管理工具:进度猫(推荐)

在项目管理中&#xff0c;一个好的工具可以极大地提高效率。 进度猫是一款非常优秀的项目管理工具。它具有非常强大的功能&#xff0c;可以帮助团队更好地管理项目进度。 通过可视化的方式&#xff0c;将项目进度、任务分配、需求变更等全面呈现给团队成员&#xff0c;让团队…

5.过滤敏感词 + 发布帖子 + 帖子详情

目录 1.过滤敏感词 1.1 定义前缀树 1.2 根据敏感词,初始化前缀树 1.3 编写过滤敏感词方法