单源最短路的简单应用

news2024/10/7 20:32:09

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.coloradmin.cn/o/1192891.html

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

相关文章

为什么说软文推广中了解用户是关键?

数字化时代下软文成为众多企业推广品牌的方式之一&#xff0c;所谓软文&#xff0c;就是指以向用户提供信息&#xff0c;并将产品隐含在信息中的柔性手段。 想要使软文效果明显&#xff0c;就必须深入了解用户&#xff0c;把握其需求、兴趣和行为特点&#xff0c;这也是今天媒…

速锐得柴油发动机车辆数据的实时获取定位和运行状态监测设计思路

随着港口、油田、车队运输、物流及冷链等多种交通运输领域的兴起&#xff0c;保障性集团运输业务在这些领域凸显出重要的作用&#xff0c;数字化转型及平台系统性管理要求越来越高&#xff0c;针对柴油发动机车辆数据的实时获取定位和运行状态的检测方案配套平台系统&#xff0…

交叉编译 mysql-connector-c

下载 mysql-connector-c $ wget https://downloads.mysql.com/archives/get/p/19/file/mysql-connector-c-6.1.5-src.tar.gz 注意&#xff1a;mysql-connector 的页面有很多版本&#xff0c;在测试过程中发现很多默认编译有问题&#xff0c;其中上面的 6.1.5 的版本呢是经过测…

如何利用软文推广提升消费者“购买力”?

企业软文推广的目的大部分是为了将自己的产品卖出去&#xff0c;想要成功卖出去还得将重心放在消费者身上&#xff0c;今天媒介盒子就来分享&#xff0c;如何利用软文推广提升消费者的“购买力”。 一、 研究产品属性 产品是连接企业和消费者的桥梁&#xff0c;要想将产品卖出…

传输层中的TCP和UPD协议

一)应用层协议简介:根据需求明确要传输的信息&#xff0c;明确要传输的数据格式&#xff1b; 应用层协议:这个协议&#xff0c;实际上是和程序员打交道最多的协议了 1)其它四层都是操作系统&#xff0c;驱动&#xff0c;硬件实现好了的&#xff0c;咱们是不需要管 2)应用层:当我…

K9203 996920302 面向DNP3的网络安全解决方案

K9203 996920302 面向DNP3的网络安全解决方案 2014年ISA卓越技术创新奖获得者&#xff0c;超电子&#xff0c;3eTI的CyberFence工业防火墙解决方案提供强大加密和应用程序级深度数据包检测(DPI)功能。最近&#xff0c;3eTI为其CyberFence产品线增加了DNP3(分布式网络协议)支持…

一招解密网络流量瓶颈!

前言 我们曾介绍过观测云提供全面的基础设施监测方案&#xff08;参见《全方位监控基础设施&#xff0c;坚实守护您的业务稳定&#xff01;》&#xff09;&#xff0c;能够高效全面地帮助您实时观测所有的基础设施对象及云产品等&#xff0c;赋能您的业务稳定发展。今天我们将…

Centos配置邮件发送

在CentOS Linux上配置邮件发送 在这个指南中&#xff0c;我们将讨论如何配置CentOS Linux系统以通过外部邮件服务器发送电子邮件&#xff0c;使用自己的邮件账户进行发送。 第一步&#xff1a;开启SMTP授权码 首先&#xff0c;我们以QQ邮箱为例&#xff0c;需要开启SMTP授权…

消防站拍摄VR全景,“火焰蓝”让你的安全感拉满

今年全国消防日的主题是“预防为主、生命至上”&#xff0c;看着这些“火焰蓝”有没有将你的安全感拉满呢&#xff1f;近年来&#xff0c;消防力量的增强使得专业救援力量也逐渐加强&#xff0c;综合消防救援能力也在全面提升&#xff0c;通过VR全景拍摄消防站也是一个非常有意…

驱动基石之_tasklet中断下半部_工作队列_中断线程化处理

tasklet中断下半部 linux的中断分为两个部分&#xff1a; 1.中断上半部&#xff1a;在中断上半部期间&#xff0c;不允许被其他中断打断&#xff0c;直到中断上半部的服务函数执行完。 2.中断下半部&#xff1a;中断下半部&#xff0c;在执行中断下半部服务函数的期间&#xf…

【图论实战】 Boost学习 03:dijkstra_shortest_paths

文章目录 示例代码 示例 最短路径: A -> C -> D -> F -> E -> G 长度 16 代码 #include <iostream> #include <boost/graph/adjacency_list.hpp> #include <boost/graph/dijkstra_shortest_paths.hpp> #include <boost/graph/graphviz.h…

【三维重建】摄像机几何

针孔相机模型 为了方便我们对针孔相机模型进行数学建模&#xff0c;我们往往对虚拟像平面进行研究&#xff0c;因为虚拟像平面的方向与我们实际物体的方向一致。 通过相似三角形法可以得到三维坐标到二维坐标映射 将像平面原点坐标移动到左下角&#xff1a; 加上现实世界单位&a…

【uni-app + uView】CountryCodePicker 国家区号组件

1. 效果图 2. 组件完整代码 <template><u-popup class="country-code-picker-container" v-if="show" :show

IntelliJ IDEA 2023.2.1 (Ultimate Edition) 版本 Git 如何合并多次的本地提交进行 Push

本心、输入输出、结果 文章目录 IntelliJ IDEA 2023.2.1 (Ultimate Edition) 版本 Git 如何合并多次的本地提交进行 Push前言为什么需要把多次本地提交合并合并提交的 2 种形式:事中合并、事后合并事中合并事后合并:支持拆分为多组提交弘扬爱国精神IntelliJ IDEA 2023.2.1 (U…

Vue生命周期全解析:从工厂岗位到任务执行,一览无遗!

&#x1f3ac; 江城开朗的豌豆&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 &#x1f4dd; 个人网站 :《 江城开朗的豌豆&#x1fadb; 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! 目录 ⭐ 专栏简介 &#x1f4d8; 文章引言 一、生…

通过商品ID获取到京东商品详情页面数据,京东商品详情官方开放平台API接口,京东APP详情接口,可以拿到sku价格,销售价演示案例

淘宝SKU详情接口是指&#xff0c;获取指定商品的SKU的详细信息。SKU是指提供不同的商品参数组合的一个机制&#xff0c;通过不同的SKU来标识商品的不同组合形式&#xff0c;如颜色、尺寸等。SKU详情接口可以帮助开发者获取指定商品的SKU列表&#xff0c;以及每个SKU的属性、库存…

在线直线度测量仪为什么在轧钢行业越来越受欢迎!

在线直线度测量仪是利用光电检测原理及直线法进行直线度尺寸精密检测的。其测量方法是前后两台测量仪测量的数据拟合一条直线&#xff0c;中间的测量仪所测数值与直径做对比&#xff0c;即可得到被测物的直线度尺寸。 在线直线度测量仪的优点 在线直线度测量仪是一种三台小测…

Unity中全局光照GI的总结

文章目录 前言一、在编写Shader时&#xff0c;有一些隐蔽的Bug不会直接报错&#xff0c;我们需要编译一下让它显示出来&#xff0c;方便修改我们选择我们的Shader&#xff0c;点击编译并且展示编译后的Shader后的内容&#xff0c;隐蔽的Bug就会暴露出来了。 二、我们大概回顾一…

创新,无处不在的便利体验——基于智能视频技术的安防监控系统EasyCVR

随着科技的迅猛发展&#xff0c;基于智能视频和语音技术的EasyCVR智能安防监控系统正以惊人的速度改变我们的生活。EasyCVR通过结合先进的视频分析、人工智能和大数据技术&#xff0c;为用户提供了更加智能、便利的安全保护体验&#xff0c;大大提升了安全性和便利性。本文将介…

常见产品结构四大类型 优劣势比较

一般&#xff0c;我们通过产品架构来构建用户体验&#xff0c;这样可以提供更清晰的导航和组织、优化用户流程和交互、增强产品的可扩展性和可维护性&#xff0c;提升用户的满意度和忠诚度。如果没有明确的产品结构&#xff0c;可能会导致功能冗余或功能缺失、交互流程混乱等问…