穷游?“穷”游?

Description

贫穷的小A有一个梦想,就是到t国去一次穷游,但现实是残酷的。小A所在的世界一共有n(n<=500)个国家,国家与国家之间总共有E(E<=50000)条道路相连,第i个国家对于进入它的外国人都要收取Bi的费用,而小A家住在s国,他必须通过这些道路在各个国家之间中转最终到达t国(除非他运气够好可以直接从s国到达t国)。但是贫穷的小A只剩下M(M<=100)元家底了,因此他必须精打细算旅途的费用,同时小A对于t国实在太向往了,因此他希望能够走最短的路尽快到达t国。这个问题难倒了小A,现在他请你帮他算一算他到达t国的最短路径有多长。

Input

第一行输入T(T<=10)表示有T组数据。每组数据第一行输入n、E、s、t、M,分别表示小A所在世界的国家数、国家之间的总道路数、小A的国籍、小A向往的国家以及小A的家底;接下来一行输入n个正整数Bi,表示第i个国家收取的过路费(由于小A是s国人,因此s国不会收取,但t国会);接下来输入E行每行三个正整数u(1<=u<=n)、v(1<=v<=n)、w,表示u国和v国之间存在着一条长度为w的无向边(可能有重边)。输入保证最终结果不会使int溢出。

Output

输出T行正整数,第i行表示第i组数据小A花费不超过M元到达t国的最短路。若小A无法到达t国,输出-1.

Sample Input

3
2 2 1 2 10
20 10
1 2 1
1 2 2
3 1 1 3 10
1 1 1
2 3 1
3 3 1 3 10
1 11 1
1 2 1
1 2 3
2 3 1

Sample Output

1
-1
-1

#include <iostream>
#include <vector>
#include <queue>
#include <climits>
using namespace std;struct Node {int cost;       // 距离int country;    // 到达了哪个国家int spent;      // 花费了多少钱Node(int c, int co, int s) : cost(c), country(co), spent(s) {}bool operator>(const Node& other) const {return cost > other.cost;}
};typedef pair<int, int> pii;vector<vector<int>> dijkstra(vector<vector<pii>>& graph, int start, int max_cost, vector<int>& countries) {int n = graph.size();vector<vector<int>> dist(n+1, vector<int>(max_cost + 1, INT_MAX));dist[start][0] = 0;priority_queue<Node, vector<Node>, greater<Node>> pq;pq.push(Node(0, start, 0));while (!pq.empty()) {int cost = pq.top().cost;int u = pq.top().country;int spent = pq.top().spent;pq.pop();if (cost > dist[u][spent]) continue;for (auto edge : graph[u]) {int v = edge.first;int w = edge.second;int new_spent = spent + countries[v];if (new_spent <= max_cost && cost + w < dist[v][new_spent]) {dist[v][new_spent] = cost + w;pq.push(Node(dist[v][new_spent], v, new_spent));}}}return dist;
}int main() {int T;cin >> T;while (T--) {int n, E, s, t, M;cin >> n >> E >> s >> t >> M;vector<int> countries(n);for (int i = 0; i < n; i++) {cin >> countries[i];}vector<vector<pii>> graph(n);for (int i = 0; i < E; i++) {int u, v, w;cin >> u >> v >> w;graph[u-1].push_back({v-1, w});graph[v-1].push_back({u-1, w});}vector<vector<int>> dist = dijkstra(graph, s-1, M, countries);int min_cost = INT_MAX;for (int spent = 0; spent <= M; spent++) {min_cost = min(min_cost, dist[t-1][spent]);}if (min_cost == INT_MAX) {cout << -1 << endl;} else {cout << min_cost << endl;}}return 0;
}

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

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

相关文章

93基于matlab的萤火虫算法优化支持向量机(GSA-SVM)分类模型

基于matlab的萤火虫算法优化支持向量机&#xff08;GSA-SVM&#xff09;分类模型&#xff0c;以分类精度为优化目标优化SVM算法的参数c和g&#xff0c;输出分类可视化结果。数据可更换自己的&#xff0c;程序已调通&#xff0c;可直接运行。 93萤火虫算法优化支持向量机 (xiaoh…

盘点25个Html游戏Game源码网页爱好者不容错过

盘点25个Html游戏Game源码网页爱好者不容错过 学习知识费力气&#xff0c;收集整理更不易。 知识付费甚欢喜&#xff0c;为咱码农谋福利。 下载链接&#xff1a;https://pan.baidu.com/s/1lSNLjWB4xMuLV8m_kDtczw?pwd6666 提取码&#xff1a;6666 项目名称 21点游戏 H5…

将多个字节对象组成的列表中的多个字节对象连接成为一个字节对象bytes.join()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 将多个字节对象组成的列表 中的多个字节对象 连接成为一个字节对象 bytes.join() [太阳]选择题 请以下代码输出的结果是&#xff1f; byte_list [bK,be,by] print("【显示】byte_list&q…

智慧用电安全动态监控系统

智慧用电安全动态监控系统是一种先进的电力监控技术系统&#xff0c;它运用物联网、大数据、云计算等先进技术&#xff0c;对电力系统的运行状况进行实时监控和预警。 该系统依托电易云-智慧电力物联网&#xff0c;通过智能传感终端采集电气线路的实时运行数据&#xff0c;客户…

面试题:说说 Cookie、Session、Token、JWT?

文章目录 什么是认证&#xff08;Authentication&#xff09;什么是授权&#xff08;Authorization&#xff09;什么是凭证&#xff08;Credentials&#xff09;什么是 Cookiecookie 重要的属性 什么是 Sessionsession 认证流程 Cookie 和 Session 的区别什么是 Token&#xff…

vscode console.log快捷键

在 Visual Studio Code 中&#xff0c;您可以使用快捷键「Ctrl Shift P」&#xff08;Mac 用户请使用「Cmd Shift P」&#xff09;打开命令面板&#xff0c;然后输入「Editor: Insert Console.log」即可快速插入「console.log」代码。此快捷键已内置于 Visual Studio Code …

23种设计模式之C++实践(二)

23种设计模式之C++实践 3. 设计模式(二)组合型模式7. 适配器模式——不兼容结构的协调7.2:类适配器模式7.3:双向适配器模式适配器模式总结8.桥接模式——处理多维度变化桥接模式总结9. 组合模式——树形结构的处理9.2 透明组合模式9.3 安全组合模式组合模式总结10. 装饰模式…

解读Java虚拟机垃圾回收器:探究经典算法背后的奥秘

目录 一、GC分类与性能指标 &#xff08;一&#xff09;垃圾回收器分类 &#xff08;二&#xff09;性能指标 &#xff08;三&#xff09;不可能三角 二、不同的垃圾回收器概述 三、Serial回收器&#xff1a;串行回收 四、ParNew回收器&#xff1a;并行回收 五、Parall…

php使用CORS解决跨域

CORS 是一种由 W3C 制定的跨域资源共享标准&#xff0c;通过在服务器端设置 HTTP 头来实现跨域请求。 在 PHP 中&#xff0c;可以通过设置响应头来启用 CORS&#xff1a; <?php // 服务器端 PHP 文件 header(Access-Control-Allow-Origin: *); // 允许所有域名访问 heade…

Spring Boot 集成 spring security 01

一、导入依赖&#xff08;pom.xml&#xff09; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation&qu…

态势感知是什么

在当今高度信息化的时代&#xff0c;信息安全风险已经成为企业、政府和个人的重要关注点。为了有效应对这些风险&#xff0c;态势感知成为了一种日益重要的能力。态势感知是一种基于环境的、动态、整体地洞悉安全风险的能力&#xff0c;是以安全大数据为基础&#xff0c;从全局…

软件产品经理常用的ChatGPT通用提示词模板

产品规划和发展战略&#xff1a;请帮助我制定软件产品的规划和发展战略&#xff0c;包括市场调研、用户需求分析、产品定位、竞争对手分析等方面的内容&#xff0c;以便我能够更好地把握市场机会并制定相应的发展策略。 产品设计和开发&#xff1a;请帮助我进行软件产品的设计…

听GPT 讲Rust源代码--src/tools(5)

File: rust/src/tools/rust-analyzer/crates/hir-ty/src/mir/lower.rs 在Rust源代码中&#xff0c;lower.rs文件位于Rust Analyzer项目的hir-ty子库中&#xff0c;其目的是将高级中间表示&#xff08;HIR&#xff09;降低为中间表示&#xff08;MIR&#xff09;。下面对文件及其…

Python----文件备份案例

实例代码 # 1、接收用户输入的文件名&#xff08;要备份的文件名&#xff09; oldname input(请输入要备份的文件名称&#xff1a;) # python.txt # 2、规划备份文件名&#xff08;python[备份].txt&#xff09; # 搜索点号 index oldname.rfind(.) # 返回文件名和文件后缀 …

数据结构-归并排序

归并排序 基本概念 归并是指将两个或两个以上的有序表合并成一个有序表。 基本思想 假设有N个记录&#xff0c;则可以看成是N个有序的子序列&#xff0c;每个子序列的长度为1&#xff0c;然后两两归并得到[n/2] 个&#xff08;上取整&#xff09;长度为2的子序列&#xff…

css实现最简单的3d透视效果,通过旋转可以直观感受到

css的3d效果还是非常复杂的&#xff0c;我今天简单学习了一下入门&#xff0c;实现了一个超级简单的效果&#xff0c;帮助我自己理解这个3d的过程&#xff0c;实现的效果动画如下&#xff1a;可以通过调整父元素旋转的角度&#xff0c;更加直观的感受这个3d效果&#xff1a; 实…

【开源视频联动物联网平台】j2mod库对指令码的定义

在J2Mod库中&#xff0c;Modbus通信使用指令码来标识要执行的操作。指令码&#xff08;Function Code&#xff09;是Modbus协议中用于定义请求和响应类型的数字代码。不同的指令码表示不同的功能&#xff0c;例如读取保持寄存器、写入单个寄存器等。以下是一些常见的Modbus指令…

C/S与B/S的区别

B/S与C/S理解 C/S结构B/S结构问题数据放在服务器端与客户端的利弊 C/S结构 客户端&#xff1a;用户安装的软件 服务端&#xff1a;统一管理数据库的主机中的软件 叫做服务端。 B/S结构 用户通过浏览器实现&#xff08;往往表示业务逻辑在前端进行实现&#xff0c;主要业务逻…

【数据结构初阶】双向链表

各位读者老爷好&#xff0c;很高兴你又来读本鼠鼠的博客。鼠鼠我呀基于C语言实现一下双向链表&#xff0c;有兴趣的读者老爷可以瞅瞅哈&#xff01; 目录 1.定义双向链表节点 2.初始化哨兵位 3.双向链表销毁 4.双向链表打印 5.双向链表在pos的前面进行插入 6.双向链表删除…

初学者如何入门深度学习:以手写数字字符识别为例看AI 的学习路径,一图胜千言!超多高清大图收集整理

文章大纲 深度神经网络机器学习,深度学习,数据发掘之间的关系理解深度神经网络最好的可视化工具深度学习基础概念能解决神马种类的问题?卷积池化以手写字符识别为例讲述深度学习的分类问题MNIST 数据集简介初学者入门 :生成式 AI -- generative-ai-for-beginners从神经网络…