PTA 1030 Travel Plan
个人学习记录,代码难免不尽人意。
A traveler’s map gives the distances between cities along the highways, together with the cost of each highway. Now you are supposed to write a program to help a traveler to decide the shortest path between his/her starting city and the destination. If such a shortest path is not unique, you are supposed to output the one with the minimum cost, which is guaranteed to be unique.
Input Specification:
Each input file contains one test case. Each case starts with a line containing 4 positive integers N, M, S, and D, where N (≤500) is the number of cities (and hence the cities are numbered from 0 to N−1); M is the number of highways; S and D are the starting and the destination cities, respectively. Then M lines follow, each provides the information of a highway, in the format:
City1 City2 Distance Cost
where the numbers are all integers no more than 500, and are separated by a space.
Output Specification:
For each test case, print in one line the cities along the shortest path from the starting point to the destination, followed by the total distance and the total cost of the path. The numbers must be separated by a space and there must be no extra space at the end of output.
Sample Input:
4 5 0 3
0 1 1 20
1 3 2 30
0 3 4 10
0 2 2 20
2 3 1 20
Sample Output:
0 2 3 3 40
#include<cstdio>
#include<algorithm>
using namespace std;
int N,M,C1,C2;
const int maxn=510;const int INF=1000000000;
bool vis[maxn]={false};
int d[maxn],c[maxn],pre[maxn];
struct node{int d;int cost;
};
node Node[maxn][maxn];
void dijkstra(){fill(d,d+maxn,INF);fill(c,c+maxn,INF);for(int i=0;i<N;i++) pre[i]=i;d[C1]=0;c[C1]=0;for(int i=0;i<N;i++){int u=-1;int min=INF;for(int j=0;j<N;j++){if(vis[j]==false&&d[j]<min){u=j;min=d[j];}}if(u==-1) return;vis[u]=true;for(int v=0;v<N;v++){if(vis[v]==false&&Node[u][v].d!=0){if(d[v]>Node[u][v].d+d[u]){d[v]=Node[u][v].d+d[u];c[v]=Node[u][v].cost+c[u];pre[v]=u;}else if(d[v]==Node[u][v].d+d[u]){if(c[v]>Node[u][v].cost+c[u]){c[v]=Node[u][v].cost+c[u];pre[v]=u;}}}}}
}
void DFS(int s){if(s==C1){printf("%d",s);return;}else{DFS(pre[s]);printf(" %d",s);}
}
int main(){scanf("%d%d%d%d",&N,&M,&C1,&C2);for(int i=0;i<M;i++){int cost,d;int c1,c2;scanf("%d%d%d%d",&c1,&c2,&d,&cost);node* n=new node;n->cost=cost;n->d=d;Node[c1][c2]=Node[c2][c1]=*n;} dijkstra();DFS(C2);printf(" %d %d\n",d[C2],c[C2]);
}
本题参考了《算法笔记》上面的dijkstra算法,对于求解这一类的最小值问题可以将dijkstra算法的模板背过,然后根据题意修改其内容即可。
除了上面这种做法还可以将第二类距离的求解从dijkstra算法中剥离出来,采用DFS方法来处理,比较简单,我觉得两种方法掌握一种即可。
相关文章:
PTA 1030 Travel Plan
个人学习记录,代码难免不尽人意。 A traveler’s map gives the distances between cities along the highways, together with the cost of each highway. Now you are supposed to write a program to help a traveler to decide the shortest path between his/h…...
MFC、Qt、WPF?该用哪个?
MFC、Qt和WPF都是流行的框架和工具,用于开发图形用户界面(GUI)应用程序。选择哪个框架取决于你的具体需求和偏好。MFC(Microsoft Foundation Class)是微软提供的框架,使用C编写,主要用于Windows…...
使用logback记录日志
1. Pom引用依赖 <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.11</version> </dependency> 2. logback.xml <?xml version"1.0" encoding"U…...
企业工程项目管理系统源码(三控:进度组织、质量安全、预算资金成本、二平台:招采、设计管理) em
工程项目管理软件(工程项目管理系统)对建设工程项目管理组织建设、项目策划决策、规划设计、施工建设到竣工交付、总结评估、运维运营,全过程、全方位的对项目进行综合管理 工程项目各模块及其功能点清单 一、系统管理 1、数据字典&#…...
【安装】XMind2022XMind2020安装教程(资源)
Xmind是一个制作思维导图很便利的软件。 1.资源链接 Xmind2022: 链接:https://pan.baidu.com/s/1j4DFedxxX2YJ3HBy1-MpHw?pwdxmin 提取码:xmin Xmind2020: 链接:https://pan.baidu.com/s/1wNqMApuy0yoBF2CvpBDpDA?pwdxmin 提取码&#x…...
Windows下QT Creator安装MinGW 32bit编译器
前言 注:本作者是基于FFmpeg开发需要,故在Windows下QT Creator中安装MinGW 32bit编译器!其它型号编译器参照此文章基本可以实现! 一、下载需要的编译器 1、下载链接 链接: 链接:https://pan.baidu.com/…...
Emacs之解决键值绑定冲突问题(一百二十三)
简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…...
瞄准产业应用,大模型加持的深兰科技AI虚拟数字人落地业务场景
伴随ChatGPT的问世,在技术与商业运作上都日渐发展成熟的AI数字人产业正持续升温。 目前的AI数字人不仅拥有超高“颜值”,同时还拥有更为丰富的、细腻的表情和动作。更有甚者,AI数字人已经具备自定义构建知识图谱、自主对话、不断学习成长的能…...
【网络基础进阶之路】基于MGRE多点协议的实战详解
PS:本要求基于华为的eNSP模拟软件进行 具体要求: 完成步骤: 1、根据上述要求,对各路由器进行地址安排,如下图。 2、进入各路由器,对每个端口进行地址设置。 R1路由器设置: ISP路由器设置&…...
Spark、RDD、Hive 、Hadoop-Hive 和传统关系型数据库区别
Hive Hadoop Hive 和传统关系型数据库区别 Spark 概念 基于内存的分布式计算框架 只负责算 不负责存 spark 在离线计算 功能上 类似于mapreduce的作用 MapReduce的缺点 运行速度慢 (没有充分利用内存)接口比较简单,仅支持Map Reduce功能…...
[运维]python 启用http 文件服务
要在Python中启用HTTP文件服务,您可以使用内置的http.server模块(在Python 3中)或SimpleHTTPServer模块(在Python 2中)。 在Python 3中: python -m http.server在Python 2中: python -m Simp…...
electron-builder 打包 exe 异常错误集锦
项目技术 vue-electron vue-router vuex vuex-electron element-ui echarts mysql 打包异常 Error: Unresolved node modules: vue Error: Unresolved node modules: vue at D:\Code\Demo\Vue\Voice\App\node_modules\_app-builder-lib20.44.4app-builder-lib\src\…...
14-5_Qt 5.9 C++开发指南_基于HTTP 协议的网络应用程序
文章目录 1. 实现高层网络操作的类2. 基于HTTP协议的网络文件下载3.源码3.1 可是化UI设计3.2 mainwindow.h3.3 mainwindow.cpp 1. 实现高层网络操作的类 Qt 网络模块提供一些类实现 OSI 7 层网络模型中高层的网络协议,如 HTTP、FTP、SNMP等,这些类主要是…...
Kotlin委托
委托 委托 代理 方法内的成员永远拿不到thisRef:官方委托和自定义委托-》方法里面没办法使用反射 委托只能类委托和属性委托 Kotlin委托 本文链接:https://blog.csdn.net/feather_wch/article/details/132095759 类委托 1、类委托 委托的是接口的方…...
分布式协议与算法——CAP理论、ACID理论、BASE理论
CAP理论 CAP理论,对分布式系统的特性做了高度抽象,比如抽象成了一致性、可用性和分区容错性,并对特性间的冲突(也就是CAP不可能三角)做了总结。 CAP三指标 CAP理论对分布式系统的特性做了高度抽象,形成了…...
接口测试 Jmeter 接口测试 —— 请求 Headers 与传参方式
一、 背景: 在使用 Jmeter 进行接口测试时,有些小伙伴不知道 Headers 和请求参数 (Parameters,Body Data) 的联系,本文主要讲 Content-Type 为 application/x-www-form-urlencoded 和 application/json 的场景。 1、使用 Parame…...
【redis】redis部署1主2从3哨兵demo搭建示例
redis版本为7,搭建的架构为1主2从3哨兵的架构。本文是对搭建的过程做一个回忆,过程可能遗漏了某些步骤,见谅。 首先,需要有一个已经安装了的redis。我们从redis源码目录中,找到一个redis.conf文件,这个文件…...
C++数据结构之平衡二叉搜索树(一)——AVL的实现(zig-zag/左右双旋/3+4重构)
目录 00.BBST——平衡二叉搜索树01.AVL树02.AVL的插入2.1单旋——zig 与 zag2.2插入节点后的单旋实例2.3手玩小样例2.4双旋实例2.5小结 03.AVL的删除3.1单旋删除3.2双旋删除3.3小结 04.34重构05.综合评价AVL5.1优点5.2缺点 00.BBST——平衡二叉搜索树 本文是介绍众多平衡二叉搜…...
免疫疗法勘察兵——DC细胞
DC细胞又叫树状细胞或者树突细胞,1869年由保罗兰格尔翰斯发现,一开始被误以为是神经细胞的一种,直到1973年皮肤科医师Inga Silberberg发现了他的免疫功能,同年,被拉尔夫斯坦曼和赞威尔A科恩两人正式命名为“dendritic…...
Django实现音乐网站 ⑷
使用Python Django框架制作一个音乐网站,在系列文章3的基础上继续开发, 本篇主要是后台歌曲类型表、歌单表模块功能开发。 目录 表结构设计 歌曲类型表结构 歌单表结构 创建表模型 创建表 后台注册表模型 引入表模型 后台自定义 总结 表结构设计…...
2026年AI应用开发完整路线:Java后端+Python大模型,少走2年弯路
文章强调AI应用开发需Java后端与Python并重,78%企业招聘要求Java后端知识。提供三条学习路线:Java后端基础、Java AI进阶、Python大模型实战。针对不同人群给出精准建议,指出跳过后端直接学Python是最大误区。掌握JavaPython的复合型工程师薪…...
VMware虚拟机安装教程:Qwen3-TTS开发环境配置
VMware虚拟机安装教程:Qwen3-TTS开发环境配置 1. 环境准备与系统要求 在开始配置Qwen3-TTS开发环境之前,我们需要先确保硬件和软件环境满足基本要求。这个环节很重要,好的开始是成功的一半。 首先来看看硬件要求。建议使用至少8GB内存的电…...
【Debug】从 cv2 导入失败到 numpy + BLAS 根因:一次 conda 虚拟环境重建实录
从 cv2 导入失败到 numpy BLAS 根因:一次 conda 虚拟环境重建实录 表面上看,这是一次 cv2 导入失败的问题;真正追到最后,根因却落在 numpy 初始化底层 BLAS 运行库的阶段。更重要的是,这个问题并不是简单的“环境脏了…...
OpenClaw智能写作:Qwen3.5-9B驱动的草稿生成与优化
OpenClaw智能写作:Qwen3.5-9B驱动的草稿生成与优化 1. 为什么需要AI写作助手? 作为一个经常需要输出技术文档的开发者,我发现自己总在重复同样的困境:面对空白文档时大脑一片空白,写完后又陷入无休止的语法检查和格式…...
iOS 26.4越狱深度解析:从技术原理到实战应用的全面指南
iOS 26.4越狱深度解析:从技术原理到实战应用的全面指南 【免费下载链接】Jailbreak iOS 26.4 - 26, 17 - 17.7.5 & iOS 18 - 18.7.3 Jailbreak Tools, Cydia/Sileo/Zebra Tweaks & Jailbreak News Updates || AI Jailbreak Finder 👇 项目地址…...
Hermes Agent vs OpenClaw:我花了一周对比,说说真实感受
先说结论Hermes Agent 的核心卖点是"会自己变聪明"——完成任务后会自动提炼技能、积累记忆,用得越久越好用。OpenClaw 的核心卖点是"生态大"——50 平台接入、13000 社区技能,开箱即用。两个都是 MIT 开源。选哪个,取决…...
分布式与微服务技术架构
对比项分布式微服务微服务前端框架Vue 2Vue 3React18脚本语言JavaScriptTypeScriptJSX / ES6 / TypeScript构建工具Vue CLIViteViteUI 组件库Element UIElement PlusAnt Design状态管理VuexPiniaRedux Toolkit(RTK)路由管理Vue Router 3Vue Router 4Reac…...
信息安全等级保护制度定级 → 备案 → 建设整改 → 等级测评(由具备资质的第三方机构执行) → 监督检查
一、网络安全防护技术 防火墙(Firewall):部署在网络边界(如企业出口),基于预设规则(IP/端口/协议/应用层策略)控制进出流量,实现访问过滤与网络隔离。分为包过滤、状态检…...
Escrcpy手机投屏:解决安卓手机投屏到电脑的常见问题与实用指南
你是否遇到过这样的场景:需要在电脑上演示手机App操作,却只能用手机对着摄像头;想在大屏幕上观看手机里的视频,却找不到合适的投屏工具;或者需要用电脑键盘在手机上快速输入文字,却只能低头戳屏幕。这些需求…...
程序员副业指南:从技术变现到财富自由
副业图谱概述 定义程序员副业图谱的概念与价值当前主流副业类型分类(技术输出、知识变现、接单开发等)数据来源:CSDN社区案例、用户调研、平台公开数据 技术副业方向分析 代码开发类:外包项目、开源协作、工具脚本开发内容创作…...
