发布时间:2026/6/14 18:05:16
题解:AtCoder AT_awc0089_d Cheapest Route
本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。欢迎大家订阅我的专栏算法题解C与Python实现附上汇总贴算法竞赛备考冲刺必刷题C | 汇总【题目来源】AtCoderD - Cheapest Route【题目描述】Takahashi lives in a country consisting ofN NNcities. Each city is numbered from1 11toN NN, and the population of cityi iiisM i M_iMi​.There areK KKroads in this country, and roadk kkbidirectionally connects cityU k U_kUk​and cityV k V_kVk​. Takahashi can travel in either direction between two cities that are directly connected by a road. He may also pass through the same road or the same city multiple times.Each time Takahashi travels from citya aato an adjacent cityb bbthat is directly connected by a road, he must pay a toll ofM a × M b M_a \times M_bMa​×Mb​.Takahashi is currently in city1 11. There areP PPcities with airports in this country, which are citiesE 1 , E 2 , … , E P E_1, E_2, \dots, E_PE1​,E2​,…,EP​. Takahashi can leave the country once he reaches any city with an airport. If city1 11itself has an airport, he can leave without moving, and the total toll is0 00.Find the minimum total toll Takahashi must pay to travel from city1 11to any city with an airport. It is guaranteed that at least one city with an airport is reachable from city1 11.高桥住在一个有N NN个城市组成的国家。每个城市编号从1 11到N NN城市i ii的人口为M i M_iMi​。这个国家有K KK条道路道路k kk双向连接城市U k U_kUk​和城市V k V_kVk​。高桥可以在由道路直接连接的两个城市之间双向移动。他也可以多次经过同一条道路或同一个城市。每次高桥从一个城市a aa移动到由道路直接连接的相邻城市b bb时他必须支付M a × M b M_a \times M_bMa​×Mb​的通行费。高桥目前在1 11号城市。这个国家有P PP个有机场的城市分别是E 1 , E 2 , … , E P E_1, E_2, \dots, E_PE1​,E2​,…,EP​。一旦高桥到达任何一个有机场的城市他就可以离开这个国家。如果1 11号城市本身就有机场他可以不移动就离开总通行费为0 00。求高桥从1 11号城市到达任意一个有机场的城市所需支付的最小总通行费。保证至少有一个有机场的城市可以从1 11号城市到达。【输入】N NNK KKP PPM 1 M_1M1​M 2 M_2M2​… \dots…M N M_NMN​U 1 U_1U1​V 1 V_1V1​U 2 U_2U2​V 2 V_2V2​⋮ \vdots⋮U K U_KUK​V K V_KVK​E 1 E_1E1​E 2 E_2E2​… \dots…E P E_PEP​The first line contains the number of citiesN NN, the number of roadsK KK, and the number of cities with airportsP PP, separated by spaces.The second line contains the population of each cityM 1 , M 2 , … , M N M_1, M_2, \dots, M_NM1​,M2​,…,MN​, separated by spaces.The followingK KKlines provide information about the roads.The( 2 k ) (2 k)(2k)-th line( 1 ≤ k ≤ K ) (1 \leq k \leq K)(1≤k≤K)contains the numbers of the two cities connected by roadk kk,U k U_kUk​andV k V_kVk​, separated by spaces.The( K 3 ) (K 3)(K3)-th line contains the numbers of the cities with airportsE 1 , E 2 , … , E P E_1, E_2, \dots, E_PE1​,E2​,…,EP​, separated by spaces.【输出】Print in one line the minimum total toll Takahashi must pay to travel from city1 11to any city with an airport.【输入样例】4 4 1 2 3 1 5 1 2 1 3 2 4 3 4 4【输出样例】7【算法标签】#Dijkstra【代码详解】#includebits/stdc.husingnamespacestd;// 定义长整型别名便于处理大数据#defineintlonglong// 定义pair类型别名用于存储边权和对typedefpairint,intPII;// 小根堆优先队列用于Dijkstra算法priority_queuePII,vectorPII,greaterPIIpq;// 定义数组最大容量constintN200005,M200005;// 全局变量声明intn;// 节点数量intk;// 边的数量intp;// 目标节点数量intans1e18;// 记录最短距离初始化为极大值intm[N];// 每个节点的权值intdist[N];// 存储从起点到各节点的最短距离boolst[N];// 标记节点是否已确定最短距离vectorPIIh[N];// 邻接表存储图的边信息inte[N];// 未使用的数组保留原样// Dijkstra求最短路算法voiddijkstra(){// 初始化标记数组和距离数组memset(st,0,sizeof(st));memset(dist,0x3f,sizeof(dist));// 起点为节点1距离为0pq.push({0,1});dist[1]0;// 主循环每次取出距离最小的未确定节点while(!pq.empty()){intupq.top().second;// 当前节点编号intwpq.top().first;// 当前距离pq.pop();// 如果该节点已经确定了最短距离跳过if(st[u]true)continue;// 标记该节点已确定最短距离st[u]true;dist[u]w;// 遍历当前节点的所有邻接节点for(inti0;ih[u].size();i){intvh[u][i].second;// 邻接节点编号intedge_wh[u][i].first;// 边权// 松弛操作如果经过u到达v的距离更短则更新if(dist[v]dist[u]edge_w){dist[v]dist[u]edge_w;pq.push({dist[v],v});// 将新的距离加入优先队列}}}}// 主函数入口使用signed避免与long long冲突signedmain(){// 读取节点数量、边的数量和目标节点数量cinnkp;// 读取每个节点的权值for(inti1;in;i)cinm[i];// 读取k条边并建图while(k--){intu,v;// 边的两个端点cinuv;intwm[u]*m[v];// 边权为两端点权值的乘积h[u].push_back({w,v});// 添加双向边h[v].push_back({w,u});}// 运行Dijkstra算法求最短路dijkstra();// 读取p个目标节点找出其中距离起点最近的那个for(inti1;ip;i){intx;// 目标节点编号cinx;ansmin(ans,dist[x]);// 更新最短距离}// 输出最短距离coutansendl;return0;}【运行结果】4 4 1 2 3 1 5 1 2 1 3 2 4 3 4 4 7

相关新闻

d2s-editor:5分钟学会暗黑破坏神2存档编辑的终极指南
2026/6/12 14:57:10

d2s-editor:5分钟学会暗黑破坏神2存档编辑的终极指南

d2s-editor:5分钟学会暗黑破坏神2存档编辑的终极指南 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor 你是否曾梦想过在暗黑破坏神2中拥有完美的装备组合,却苦于漫长的刷怪过程?d2s-editor是一…

阅读更多
基于PowerQUICC的WiMAX CPE参考平台:从架构设计到生产就绪的工程实践
2026/6/12 14:57:10

基于PowerQUICC的WiMAX CPE参考平台:从架构设计到生产就绪的工程实践

1. 项目概述:一个为无线时代定制的“交钥匙”方案在2000年代中后期,当宽带无线接入技术从概念走向规模商用,无数设备制造商面临着一个共同的困境:如何将复杂的通信标准,如WiMAX,快速、可靠且低成本地转化为…

阅读更多
终极解放双手:淘宝淘金币自动化脚本全攻略
2026/6/12 14:57:10

终极解放双手:淘宝淘金币自动化脚本全攻略

终极解放双手:淘宝淘金币自动化脚本全攻略 【免费下载链接】taojinbi 淘宝淘金币自动执行脚本,包含蚂蚁森林收取能量,芭芭农场全任务,解放你的双手 项目地址: https://gitcode.com/gh_mirrors/ta/taojinbi taojinbi是一款基…

阅读更多
别再纠结了!Halcon和VisionMaster到底怎么选?给工程师的实战避坑指南
2026/6/14 17:57:54

别再纠结了!Halcon和VisionMaster到底怎么选?给工程师的实战避坑指南

Halcon与VisionMaster终极对决:5个真实项目场景下的选型决策框架在机器视觉领域的技术选型会上,总有一个问题会让会议室陷入短暂的沉默:"我们该用Halcon还是VisionMaster?"这个看似简单的选择题背后,隐藏着算…

阅读更多
[论文学习]LLM 情境学习资料的快速精确遗忘技术:基于 In-Context Learning 与量化 K-Means 的 ERASE 方法
2026/6/14 17:57:54

[论文学习]LLM 情境学习资料的快速精确遗忘技术:基于 In-Context Learning 与量化 K-Means 的 ERASE 方法

Fast Exact Unlearning for In-Context Learning Data for LLMs (A. Muresanu et al., ICML 2025) 核心问题与动机 现代大型语言模型(LLM)训练成本极高,一旦部署后,若因「被遗忘权」(Right to be Forgotten&#xff…

阅读更多
Paperless-ngx多语言配置终极指南:从单语困境到全球化文档管理
2026/6/14 17:57:54

Paperless-ngx多语言配置终极指南:从单语困境到全球化文档管理

Paperless-ngx多语言配置终极指南:从单语困境到全球化文档管理 【免费下载链接】paperless-ngx A community-supported supercharged document management system: scan, index and archive all your documents 项目地址: https://gitcode.com/GitHub_Trending/pa…

阅读更多
如何用Dism++实现Windows系统终极优化:免费专业的完整指南
2026/6/14 17:57:54

如何用Dism++实现Windows系统终极优化:免费专业的完整指南

如何用Dism实现Windows系统终极优化:免费专业的完整指南 【免费下载链接】Dism-Multi-language Dism Multi-language Support & BUG Report 项目地址: https://gitcode.com/gh_mirrors/di/Dism-Multi-language 你是否曾经为Windows系统越用越慢而烦恼&am…

阅读更多
如何一键解锁九大网盘真实下载地址:终极浏览器扩展使用指南
2026/6/14 17:57:54

如何一键解锁九大网盘真实下载地址:终极浏览器扩展使用指南

如何一键解锁九大网盘真实下载地址:终极浏览器扩展使用指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 /…

阅读更多
3步解决Windows安卓应用安装难题:APK-Installer完全指南
2026/6/14 16:57:54

3步解决Windows安卓应用安装难题:APK-Installer完全指南

3步解决Windows安卓应用安装难题:APK-Installer完全指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 在Windows上安装安卓应用一直是技术爱好者和普通用…

阅读更多
别再只用BERT了!用Transformers库的AutoModel,5分钟搞定文本相似度计算(附代码对比)
2026/6/14 0:57:30

别再只用BERT了!用Transformers库的AutoModel,5分钟搞定文本相似度计算(附代码对比)

超越BERT:用Transformers库高效实现文本相似度计算的三种实战方案在自然语言处理领域,文本相似度计算是信息检索、问答系统和推荐系统等应用的核心技术。传统方法如TF-IDF或Word2Vec已逐渐被基于Transformer的预训练模型所取代。Hugging Face的Transform…

阅读更多
Prompt Engineering:重构人机协作的工程化方法论
2026/6/14 0:57:30

Prompt Engineering:重构人机协作的工程化方法论

1. 项目概述:这不是“写提示词”,而是重构人机协作的底层逻辑“Prompt Engineering”这个词,这两年被讲得太多,也太轻飘。很多人把它理解成“给AI发指令的技巧”,甚至简化为“多加几个形容词”“换种说法再试一次”。我…

阅读更多
Anthropic提示层归零:模型即协议的工程实践
2026/6/14 0:57:30

Anthropic提示层归零:模型即协议的工程实践

1. 项目概述:这不是一次普通更新,而是一次架构级“蒸发”“Anthropic Just Shipped the Layer That’s Already Going to Zero”——这个标题一出来,我正在调试一个Claude调用链的终端前停了三秒。不是因为震惊,而是因为熟悉&…

阅读更多
别再只用BERT了!用Transformers库的AutoModel,5分钟搞定文本相似度计算(附代码对比)
2026/6/14 0:57:30

别再只用BERT了!用Transformers库的AutoModel,5分钟搞定文本相似度计算(附代码对比)

超越BERT:用Transformers库高效实现文本相似度计算的三种实战方案在自然语言处理领域,文本相似度计算是信息检索、问答系统和推荐系统等应用的核心技术。传统方法如TF-IDF或Word2Vec已逐渐被基于Transformer的预训练模型所取代。Hugging Face的Transform…

阅读更多
Prompt Engineering:重构人机协作的工程化方法论
2026/6/14 0:57:30

Prompt Engineering:重构人机协作的工程化方法论

1. 项目概述:这不是“写提示词”,而是重构人机协作的底层逻辑“Prompt Engineering”这个词,这两年被讲得太多,也太轻飘。很多人把它理解成“给AI发指令的技巧”,甚至简化为“多加几个形容词”“换种说法再试一次”。我…

阅读更多
Anthropic提示层归零:模型即协议的工程实践
2026/6/14 0:57:30

Anthropic提示层归零:模型即协议的工程实践

1. 项目概述:这不是一次普通更新,而是一次架构级“蒸发”“Anthropic Just Shipped the Layer That’s Already Going to Zero”——这个标题一出来,我正在调试一个Claude调用链的终端前停了三秒。不是因为震惊,而是因为熟悉&…

阅读更多
GIT修改用户名
2026/6/14 11:53:59

GIT修改用户名

在GIT中修改用户名可按以下步骤操作: 查看当前git的用户名,使用命令git config --list或git config user.name。修改git用户名,使用命令git config --global user.name "xxx(新的用户名)",将其中…

阅读更多
Win11Debloat:让你的Windows系统重获新生的终极优化工具
2026/6/13 15:45:46

Win11Debloat:让你的Windows系统重获新生的终极优化工具

Win11Debloat:让你的Windows系统重获新生的终极优化工具 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and …

阅读更多
技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践
2026/6/14 15:49:58

技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践

技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter m4s-converter是一个…

阅读更多