练习题解(关于最短路径)

目录

1.租用游艇

2.邮递员送信

3.【模板】单源最短路径(标准版)


1.租用游艇

P1359 租用游艇 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

输入数据:

3
5 15
7

因为这道题数据不大,所有我们直接使用Floyd 算法。

这道题大家可能没看懂怎么存图,其实就是第x行的第y个元素,就是从x站到y站的租金,所以是一个半矩阵输入。

下面是完整AC代码:

#include<bits/stdc++.h>
#define inf 1234567890
using namespace std;
int a[201][201];
int main()
{int n;cin>>n;for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)a[i][j]=inf;//初始化 for(int i=1;i<n;i++)for(int j=i+1;j<=n;j++){int x;cin>>x;a[i][j]=x;//邻边矩阵存图 }for(int k=1;k<=n;k++)for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)//式子套用 a[i][j]=min(a[i][j],a[i][k]+a[k][j]);cout<<a[1][n]<<endl;return 0;
}

2.邮递员送信

P1629 邮递员送信 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

输入数据:

5 10
2 3 5
1 5 5
3 5 6
1 2 8
1 3 8
5 3 4
4 1 8
4 5 3
3 5 6
5 4 2

这道题需要建立一个返回的图,因为这是有向图,所以1到其他节点和其他节点到1的最短路径不一定是相同的。

使用Dijkstra 算法,我们可以给dis的数组开成两倍大小,这样可以将反图也建在同一个图上,也可以重新建图,但是这样前面的方法方便一些。

下面是完整AC代码:

#include<bits/stdc++.h>
#define M 500010
#define inf 1234567890
using namespace std;
struct edge{int u,v,w,next;
}e[M];
struct node{int w,now;bool operator<(const node &k)const{return w>k.w;//堆优化,小的元素放在堆顶,大根堆 }
};
int head[M],re=0,n,m,s,v[M],dis[M];
priority_queue<node>q;
void add(int u,int v,int w)//链式前向星存图 
{e[++re].u=u;e[re].v=v;e[re].w=w;e[re].next=head[u];head[u]=re;
}
void dijkstra(int s)
{for(int i=1;i<=n*2;i++) dis[i]=inf;//将点设置为无穷大 dis[s]=0;//起点设置为0 node p;p.w=0,p.now=s;q.push(p);while(!q.empty()){node k=q.top();q.pop();int u=k.now;if(v[u]) continue;//如果遍历过,直接跳过循环 v[u]=1;for(int i=head[u];i;i=e[i].next){//下一个点 int v=e[i].v;if(dis[v]>dis[u]+e[i].w)//更新最小权重 {dis[v]=dis[u]+e[i].w;q.push((node){dis[v],v});}		}}
}
int main()
{cin>>n>>m;for(int i=0;i<m;i++){int u,v,w;cin>>u>>v>>w;//建边 add(u,v,w);add(v+n,u+n,w);//建返回的图 }dijkstra(1);//求出1到其他点的最短路径 int ans=0;for(int i=1;i<=n;i++){ans+=dis[i];}dijkstra(1+n);//求出其他点到1的最短的路径 for(int i=1+n;i<=n*2;i++){ans+=dis[i];}cout<<ans<<endl;return 0;
}

3.【模板】单源最短路径(标准版)

P4779 【模板】单源最短路径(标准版) - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

输入数据:

4 6 1
1 2 2
2 3 2
2 4 1
1 3 5
3 4 3
1 4 4

既然是模板题目,这里就直接出Dijkstra 算法来解决。

下面是AC完整代码:

#include<bits/stdc++.h>
#define M 500010
#define inf 1234567890
using namespace std;
struct edge{int u,v,w,next;
}e[M];
struct node{int w,now;bool operator<(const node &k)const{return w>k.w;//堆优化,小的元素放在堆顶,大根堆 }
};
int head[M],re=0,n,m,s,v[M],dis[M];
priority_queue<node>q;
void add(int u,int v,int w)//链式前向星存图 
{e[++re].u=u;e[re].v=v;e[re].w=w;e[re].next=head[u];head[u]=re;
}
void dijkstra()
{for(int i=1;i<=n;i++) dis[i]=inf;//将点设置为无穷大 dis[s]=0;//起点设置为0 node p;p.w=0,p.now=s;q.push(p);while(!q.empty()){node k=q.top();q.pop();int u=k.now;if(v[u]) continue;//如果遍历过,直接跳过循环 v[u]=1;for(int i=head[u];i;i=e[i].next){//下一个点 int v=e[i].v;if(dis[v]>dis[u]+e[i].w)//更新最小权重 {dis[v]=dis[u]+e[i].w;q.push((node){dis[v],v});}		}}
}
int main()
{cin>>n>>m>>s;for(int i=0;i<m;i++){int u,v,w;cin>>u>>v>>w;//建边 add(u,v,w);}dijkstra();for(int i=1;i<=n;i++){cout<<dis[i]<<" ";}return 0;
}

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

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

相关文章

Linux系统——防火墙Firewalld

目录 一、firewalld介绍 1.归入zone顺序 2.firewalld zone分类 3.预定义服务 二、图形化操作 1.打开firewalld图形化界面 2.以http服务为例&#xff0c;打开httpd服务 3.修改端口号 三、命令行配置 1.基础配置 2.查看现有firewalld设置 3.设置查看默认区 4.添加源…

类(接口)图几种箭头含义

导语 在平时的开发中&#xff0c;难免会遇到画UML图的时候&#xff0c;也就是我们所说的类图&#xff0c;但是UML图中的箭头多种多样&#xff0c;所代表的含义也是各不相同&#xff0c;今天我们就来说说这几种箭头所代表的含义。 1 泛化 概念&#xff1a;泛化表示一个更泛化的元…

CTFshow web(php命令执行 55-59)

web55 <?php /* # -*- coding: utf-8 -*- # Author: Lazzaro # Date: 2020-09-05 20:49:30 # Last Modified by: h1xa # Last Modified time: 2020-09-07 20:03:51 # email: h1xactfer.com # link: https://ctfer.com */ // 你们在炫技吗&#xff1f; if(isset($_GET[…

Jetpack 之Glance+Compose实现一个小组件

Glance&#xff0c;官方对其解释是使用 Jetpack Compose 样式的 API 构建远程 Surface 的布局&#xff0c;通俗的讲就是使用Compose风格的API来搭建小插件布局&#xff0c;其最新版本是2022年2月23日更新的1.0.0-alpha03。众所周知&#xff0c;Compose样式的API与原生差别不小&…

Android逆向学习(七)绕过root检测与smali修改学习

Android逆向学习&#xff08;七&#xff09;绕过root检测与smali修改学习 一、写在前面 这是吾爱破解正己大大教程的第五个作业&#xff0c;然后我的系统还是ubuntu&#xff0c; 这个是剩下作业的完成步骤。 二、任务目标 现在我们已经解决了一些问题&#xff0c;现在剩下的…

matplotlib图例使用案例1.1:在不同行或列的图例上添加title

我们将图例进行行显示或者列显示后&#xff0c;只能想继续赋予不同行或者列不同的title来进行分类。比较简单的方式&#xff0c;就是通过ax.annotate方法添加标签&#xff0c;这样方法复用率比较低&#xff0c;每次使用都要微调ax.annotate的显示位置。比较方便的方法是在案例1…

基于jieba、TfidfVectorizer、LogisticRegression的垃圾邮件分类,模型平均得分为0.98左右(附代码和数据集)

基于jieba、TfidfVectorizer、LogisticRegression的垃圾邮件分类,模型平均得分为0.98左右(附代码和数据集)。 垃圾邮件分类识别是一种常见的文本分类任务,旨在将收件箱中的邮件分为垃圾邮件和非垃圾邮件。以下是一些常用的技术和方法用于垃圾邮件分类识别: 基于规则的过…

探索设计模式的魅力:迭代器模式让你轻松驾驭复杂数据集合

​&#x1f308; 个人主页&#xff1a;danci_ &#x1f525; 系列专栏&#xff1a;《设计模式》 &#x1f4aa;&#x1f3fb; 制定明确可量化的目标&#xff0c;并且坚持默默的做事。 文章目录 一、&#x1f4a1; 引言二、原理与结构 &#x1f4da;&#x1f465; 迭代器模式的关…

处理MIGO 采购订单过账报错:物料账簿货币被更改

同事操作MIGO 采购订单过账报错&#xff1a;物料账簿货币被更改。 跟据查资料检查一下OKKP的配置。进去后发现了另一个报错&#xff1a; 然后再查资料&#xff0c;让检查一下SCC4的配置。经查看&#xff0c;发现是顾问copy client是忘记填写client的货币了。我维护好后&#xf…

Eclipse - Makefile generation

Eclipse - Makefile generation References right mouse click on the project -> Properties -> C/C Build -> Generate Makefiles automatically 默认会在 Debug 目录下创建 Makefile 文件。 References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/

数据结构-哈夫曼树

介绍 哈夫曼树&#xff0c;指带权路径长度最短的二叉树&#xff0c;通常用于数据压缩中 什么是带权路径长度&#xff1f; 假设有一个结点&#xff0c;我们为它赋值&#xff0c;这个值我们称为权值&#xff0c;那么从根结点到它所在位置&#xff0c;所经历的路径&#xff0c;…

无穷绕八双纽线

目录&#xff09; 前言双纽线双纽线工程化双纽线应用参考文献 前言 今天是初八&#xff0c;在中国某些地方初八有拜财神的习俗&#xff0c;“八”谐音“发”&#xff0c;等同于恭喜发财的“发”&#xff0c;寓意着在新的一年里红红火火发大财&#xff0c;三叔首先祝福各位读者…

如何使用HTTP隧道在Linux环境下构建内网穿透解决方案

你是否曾经遇到过这样的尴尬场景&#xff1a;身处内网环境&#xff0c;却想要让外部世界的朋友访问你的某个服务&#xff0c;却发现那堵墙——防火墙&#xff0c;如同一座不可逾越的山峰&#xff0c;挡住了你的去路&#xff1f;别担心&#xff0c;今天我们就来聊聊如何在Linux环…

Python:变量与数据类型

目录 一、变量 1.1 强数据类型与弱数据类型 1.2 全局函数 1.3 变量的命名规范 二、数据类型 2.1 基本数据类型 2.2 复合数据类型&#xff08;引用数据类型&#xff09; 三、数据类型转换 一、变量 变量&#xff1a;顾名思义&#xff0c;变化的量。在python中代指运行时…

【大厂AI课学习笔记】【2.2机器学习开发任务实例】(6)特征分析

今天来学习特征分析。 通过图分析每个特征与结果的对应关系。 例如上方&#xff0c;使用散点图&#xff0c;将各个特征和价格的关系&#xff0c;绘制出来&#xff0c;观察是否具有较大的相关性。 散点图可以帮助找出现有特征中&#xff0c;与价格的关联度&#xff08;正数正相…

Vue3+vite搭建基础架构(6)--- 使用vue-router

Vue3vite搭建基础架构&#xff08;6&#xff09;--- 使用vue-router 说明官方文档安装vue-router使用vue-router测试vue-router 说明 这里记录下自己在Vue3vite的项目使用vue-router的过程&#xff0c;不使用ts语法&#xff0c;方便以后直接使用。这里承接自己的博客Vue3vite搭…

[ linux网络 ] 网关服务器搭建,综合应用SNAT、DNAT转换,dhcp分配、dns分离解析,nfs网络共享以及ssh免密登录

实验准备工作&#xff1a; 网关服务器安装&#xff1a;dhcp bind &#xff08;yum install -y dhcp bind bind-utlis&#xff09; server1安装&#xff1a;httpd (yum install -y httpd) 没有网络就搭建本地yum仓库或者配置网卡使其能够上网。 ( 1&#xff09;网关服务器…

源聚达科技:抖音店铺2024年卖什么好

随着时代的变迁和科技的进步&#xff0c;消费者的购物习惯与偏好也在不断演变。展望2024年&#xff0c;抖音作为新兴的电商平台&#xff0c;其店铺销售策略需紧跟潮流&#xff0c;才能在激烈的市场竞争中脱颖而出。那么&#xff0c;哪些产品将成为抖音店铺的新宠呢? 首当其冲&…

STM32CubeMax(使用7步)新建工程

现在有时间学习一下STM32用CubeMX新建一个工程的步骤&#xff0c;特此记录一下&#xff1a; 第一步打开STM32CubeMax 第二步搜索芯片型号&#xff1a; 第三步配置时钟&#xff1a; 第四步点选配置时钟源&#xff1a; 第五步填写工程相关的名称路径信息&#xff1a; 第六步选择…

基于SpringBoot3从零配置SpringDoc

基于SpringBoot3从零配置SpringDoc 一、SpringFox二、SpringDoc三、Open API 规范四、SpringBoot3配置Knife4j1.官方参考文档2.添加依赖3.添加配置项4.设置文档首页5.编写控制器6.文档展示 一、SpringFox github SpringFox 已经停止更新了。SpringFox 对 SpringBoot3.0 不适配…