单源最短路的简单应用

1.dijkstra维护最长路

下面这个是讨论区的一个佬的理解,非常的nice

总结一句话,dijkstra的贪心保证了每次选定的点在之后都不会被其他点所更新了

同理维护最长路的时候我们发现,如果权值是0-1的话,选定的最大值在之后不会变的更大

所以可以用dijkstra来维护最长路

#include<bits/stdc++.h>
using namespace std;
const int N = 1e5+10;
double g[2010][2010];
int n,m,s,t;
double dist[N];
bool st[N];
double dijkstra()
{dist[s] = 1.0;for(int i=1;i<=n;i++){int t = -1;for(int j=1;j<=n;j++)if(!st[j]&&(t==-1||dist[j]>dist[t]))t = j;st[t] = 1;for(int j=1;j<=n;j++)if(dist[j]<dist[t]*g[t][j])dist[j] = dist[t]*g[t][j];}return dist[t];
}int main()
{cin>>n>>m;for(int i=1;i<=m;i++){int a,b,c;cin>>a>>b>>c;double z = (100.0-c*1.0)/100.0;g[a][b] = g[b][a] = max(g[a][b],z);}cin>>s>>t;printf("%.8lf",100.0/dijkstra()*1.0);}

2.stringstream处理不定长输入

#include<bits/stdc++.h>
using namespace std;
int n,m;
const int N = 1100;
int g[N][N];
int dist[N];
int a[N];
bool st[N];void dijkstra()
{memset(dist,0x3f,sizeof dist);dist[1] = 0;for(int i=1;i<=n;i++){int  t = -1;for(int j=1;j<=n;j++)if(!st[j]&&(t==-1||dist[j]<dist[t]))t = j;st[t] = 1;for(int j=1;j<=n;j++)if(dist[j]>dist[t]+g[t][j])dist[j] = dist[t] + g[t][j];}
}int main()
{cin>>m>>n;memset(g,0x3f,sizeof g);for(int i=1;i<=n;i++)g[i][i] = 0;getchar();for(int i=1;i<=m;i++){string str;getline(cin,str);stringstream ssin(str);int k  = 1;while(ssin>>a[k])k++;k--;for(int s=1;s<=k;s++)for(int j=1;j<s;j++)g[a[j]][a[s]] = 1;}dijkstra();if(dist[n]==0x3f3f3f3f)cout<<"NO";else cout<<dist[n]-1;}

3.简单虚拟原点

注意酋长不一定是这里面等级最高的 所以我们要枚举区间算好几次dijkstra

#include<iostream>
#include<cstring>
using namespace std;const int N = 1010;
int g[N][N];
int dist[N];
bool st[N];
int m,n;
int level[N];int dijkstra(int l,int r){memset(dist,0x3f,sizeof dist);dist[0] = 0;memset(st,0,sizeof st);for(int i=1;i<=n;i++){int t = -1;for(int j=0;j<=n;j++)if(!st[j]&&(t==-1||dist[j]<dist[t]))t = j;st[t] = 1;for(int j=1;j<=n;j++)if(level[j]>=l&&level[j]<=r)dist[j] = min(dist[j],dist[t]+g[t][j]);}return dist[1];
}int main()
{cin>>m>>n;memset(g,0x3f,sizeof g);for(int i=0;i<=n;i++)g[i][i] = 0;for(int i=1;i<=n;i++){int p,l,x;cin>>p>>l>>x;level[i] = l;g[0][i] = p;for(int j=1;j<=x;j++){int a,b;cin>>a>>b;g[a][i] = min(g[a][i],b);}}int res = 0x3f3f3f3f;for(int i=level[1]-m;i<=level[1];++i)res = min(res,dijkstra(i,i+m));cout<<res;}

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

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

相关文章

5G边缘计算网关的功能及作用

5G边缘计算网关具有多种功能。 首先&#xff0c;它支持智能云端控制&#xff0c;可以通过5G/4G/WIFI等无线网络将采集的数据直接上云&#xff0c;实现异地远程监测控制、预警通知、报告推送和设备连接等工作。 其次&#xff0c;5G边缘计算网关可以采集各种数据&#xff0c;包…

只改一个参数让Golang GC耗时暴降到1/30!

&#x1f449;导读 Golang GC 问题的处理网上有比较多的参考文章与教程&#xff0c;本文则聚焦在一次实际业务场景中遇到的问题&#xff0c;并将问题排查处理的全过程详细地做了整理记录&#xff0c;相信对各位 Gopher 有较大参考价值。 &#x1f449;目录 1 问题现象 2 确定原…

gitlab将项目转移到组中

personal 下&#xff0c;选中项目的 setting- transfer project 参考&#xff1a; https://blog.csdn.net/qq_62742127/article/details/130766898#:~:text%E6%89%93%E5%BC%80%E8%A6%81%E8%BD%AC%E7%A7%BB%E7%9A%84%E9%A1%B9%E7%9B%AE%E7%9A%84setting%20%E6%89%93%E5%BC%80Adv…

玄子Share-HTML5知识手册

玄子Share-HTML5知识手册 前言&#xff1a; 这一版 HTML 笔记&#xff0c;算是我写的第四版了&#xff0c;第三版对照课本编写&#xff0c;第四版则是对照 MDN 官方文档编写&#xff0c;不论是术语亦或专业性&#xff0c;都更上一层 文章依托 MDN 文档&#xff0c;拓展了大量课…

【论文解读】针对生成任务的多模态图学习

一、简要介绍 多模态学习结合了多种数据模式&#xff0c;拓宽了模型可以利用的数据的类型和复杂性&#xff1a;例如&#xff0c;从纯文本到图像映射对。大多数多模态学习算法专注于建模来自两种模式的简单的一对一数据对&#xff0c;如图像-标题对&#xff0c;或音频文本对。然…

vue2手机项目如何使用蓝牙功能

要在Vue2手机项目中使用蓝牙功能&#xff0c;你需要先了解基本的蓝牙知识和API。以下是一些基本的步骤&#xff1a; 确认你的手机设备支持蓝牙功能。在Vue2项目中安装蓝牙插件或库&#xff0c;例如vue-bluetooth或vue-bluetooth-manager。你可以通过npm安装它们。在Vue2项目中…

老师还不会评课?这里有你需要的解决方案

优点&#xff1a; 1.课件制作: 老师的PPT设计得很新颖&#xff0c;插入的音乐视频都非常贴合课堂内容&#xff0c;看得出老师非常用心地进行了设计。 2.教师素养&#xff1a;老师的语言丰富、朗读能力很出色、板书设计很工整。 3.教师风格: xx老师上课激情澎湃/非常有亲和力…

Node.js |(六)express框架 | 尚硅谷2023版Node.js零基础视频教程

学习视频&#xff1a;尚硅谷2023版Node.js零基础视频教程&#xff0c;nodejs新手到高手 文章目录 &#x1f4da;express使用&#x1f407;初体验&#x1f407;express路由⭐️路由的使用⭐️获取请求参数⭐️获取路由参数&#x1f525;练习&#xff1a;根据路由参数响应歌手信息…

AJAX 入门笔记

课程地址 AJAX Asynchronous JavaScript and XML&#xff08;异步的 JavaScript 和 XML&#xff09; AJAX 不是新的编程语言&#xff0c;而是一种使用现有标准的新方法 AJAX 最大的优点是在不重新加载整个页面的情况下&#xff0c;可以与服务器交换数据并更新部分网页内容 XML…

C++初阶(九)内存管理

&#x1f4d8;北尘_&#xff1a;个人主页 &#x1f30e;个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上&#xff0c;不忘来时的初心 文章目录 一、C/C内存分布1、选择题2、填空题3、sizeof 和 strlen 区别&#xff1f;4、总结 二、 C语言…

LED热仿真笔记

LED的输入电能主要转换为热能和光能两个部分。对于车灯散热、建筑热舒适性等计算域尺寸远大于单个LED尺寸的问题&#xff0c;通常不考虑LED的细节结构&#xff0c;LED简化为一个实体即可。 LED热源加载处理&#xff1a; 热能简化为LED实体的体热源光能简化为LED实体的发光面的…

适用于 iOS 的 10 个最佳数据恢复工具分享

在当今的数字时代&#xff0c;我们的移动设备占据了我们生活的很大一部分。从令人难忘的照片和视频到重要的文档和消息&#xff0c;我们的 iOS 设备存储了大量我们无法承受丢失的数据。然而&#xff0c;事故时有发生&#xff0c;无论是由于软件故障、无意删除&#xff0c;甚至是…

rabbitMq虚拟主机概念

虚拟主机是RabbitMQ中的一种逻辑隔离机制&#xff0c;用于将消息队列、交换机以及其他相关资源进行隔离。 在RabbitMQ中&#xff0c;交换机&#xff08;Exchange&#xff09;用于接收生产者发送的消息&#xff0c;并根据特定的路由规则将消息分发到相应的队列中。而虚拟主机则…

Unity地面交互效果——5、角色足迹的制作

大家好&#xff0c;我是阿赵。   之前几篇文章&#xff0c;已经介绍了地面交互的轨迹做法。包括了法线、曲面细分还有顶点偏移。Shader方面的内容已经说完了&#xff0c;不过之前都是用一个球来模拟轨迹&#xff0c;这次来介绍一下&#xff0c;怎样和角色动作结合&#xff0c…

大语言模型(LLM)综述(七):大语言模型设计应用与未来方向

A Survey of Large Language Models 前言8 A PRACTICAL GUIDEBOOK OF PROMPT DESIGN8.1 提示创建8.2 结果与分析 9 APPLICATIONS10 CONCLUSION AND FUTURE DIRECTIONS 前言 随着人工智能和机器学习领域的迅速发展&#xff0c;语言模型已经从简单的词袋模型&#xff08;Bag-of-…

期中考试班主任反馈家长

超实用&#xff01;期中考试后班主任给家长们的反馈话术 尊敬的家长们&#xff1a; 经过一段时间的紧张备考和答题&#xff0c;孩子们终于完成了本学期的期中考试。在此&#xff0c;我反馈一下孩子们这次考试的情况。 首先&#xff0c;感谢每一位孩子在这次考试中所做出的努力和…

洛谷 Equalize the Remainders

洛谷没提供中文题面&#xff0c;这里大致翻译一下&#xff1a; 可以进行的操作&#xff1a;任选一个数加一。 一共有n个整数&#xff0c;还有一个约数m&#xff0c;n个数都对m进行求余&#xff0c;累计余数的数量&#xff0c;要求每个余数都有n/m个。 对于样例1的输入&#xff…

Go入门简介

Go 语言从发布 1.0 版本以来备受众多开发者关注并得到广泛使用&#xff0c;Go 语言的简单、高效、并发特性吸引了众多传统语言开发者的加入&#xff0c;而且人数越来越多。 就目前来看&#xff0c;Go语言已经⼴泛应用于人工智能、云计算开发、容器虚拟化、⼤数据开发、数据分析…

机器学习复习(待更新)

01绪论 &#xff08;1&#xff09;机器学习基本分类&#xff1a; 监督学习&#xff08;有标签&#xff09;半监督学习&#xff08;部分标签&#xff0c;找数据结构&#xff09;无监督学习&#xff08;无标签&#xff0c;找数据结构&#xff09;强化学习&#xff08;不断交互&…

【Axure视频教程】item和targetitem函数

今天教大家在Axure里如何使用item和targetitem函数&#xff0c;会先学历两个函数的基础与区别&#xff0c;然后通过在表格指定位置插入行和两个中继器联动筛选的案例更加深入的讲解这两个函数的应用。注&#xff1a;该教程主要讲解item和targetitem函数&#xff0c;不包含中继器…