首页 > 其他分享 >基础图论重温

基础图论重温

时间:2024-10-25 16:32:57浏览次数:1  
标签:图论 min int 重温 短路 基础 更新 dp dis

最短路


 

https://www.luogu.com.cn/problem/B3647

都是基于松弛更新最短路的,即:dis[u][v]=min(dis[u][v], dis[u][k]+dis[k][v]),其中u是起点,v是终点,k是u->v路径中的一点。

记得考虑重边,自环的情况!!

 

 

Floyd


 

多源最短路,即求多个 u->v 的最短路,考虑dp转移即可。

O(n^3),与n次dij要快速度差不多。

 

dp状态:dis[i][j],表示从i点到j点的最短路

更新,正常这两个状态不好更新,引入一个中点k,其中k是i->j路径中的一点。

 

这样就容易更新了。

假设u是起点,v是终点,k是中点,那么:

dis[u][v]=min(dis[u][v], dis[u][k]+dis[k][v])

 

由于是dp,所以dp转移的时候要先枚举k。

#include <bits/stdc++.h>
using namespace std;
const int N=105;

int n, m, u1, v1, w1, dis[N][N];
void floyd()
{
	for (int k=1; k<=n; k++)
		for (int i=1; i<=n; i++)
			for (int j=1; j<=n; j++)
				dis[i][j]=min(dis[i][j], dis[i][k]+dis[k][j]); 
}
int main()
{
	memset(dis, 63, sizeof dis);
	
	scanf("%d%d", &n, &m);
	while (m--)
	{
		scanf("%d%d%d", &u1, &v1, &w1);
		dis[u1][v1]=min(dis[u1][v1], w1); //重边 
		dis[v1][u1]=min(dis[v1][u1], w1);
	}
	for (int i=1; i<=n; i++) dis[i][i]=0;
	
	floyd();
	
	for (int i=1; i<=n; i++)
	{
		for (int j=1; j<=n; j++) printf("%d ", dis[i][j]);
		printf("\n");
	}
	return 0;
} 

  

 

标签:图论,min,int,重温,短路,基础,更新,dp,dis
From: https://www.cnblogs.com/didiao233/p/18502848

相关文章

  • 网络协议基础(2):socket套接字及TCP、UDP的实现
    socket套接字及TCP、UDP的实现socket套接字socket的基本概念socket的类型Socket的工作流程Socket的编程接口(C++示例)1.创建Socket2.绑定地址3.监听连接4.接受连接5.连接到服务器6.发送数据7.接收数据8.关闭Socketsocket相关的结构体sockaddr结构体sockaddr......
  • C++入门基础
    少年不惧岁月长,彼方尚有荣光在。  前言 这是我自己学习C++的第一篇博客总结。后期我会继续把C++学习笔记开源至博客上。C++的兼容性1.C++兼容绝大多数C语言的语法,因此只需要把.c后缀文件改为.cpp即可。 VS编译器看到是.cpp就会调用C++编译器编译。#define......
  • ctfshow-pwn-前置基础(20-22)
    pwn20-pwn22是关于.got节跟.got.plt节的。这3道题的问题描述全是一样的,全都是问.got跟.got.plt是否可写以及他们的地址是什么,然后根据这些信息来拼成flag。那么关于.got和.got.plt的内容非常复杂,这里呢我也不解释了,推荐一个牛逼的博主的文章,大家可以自行去了解一下这两个节。聊聊......
  • java基础
    接口和抽象类有什么共同点和区别?共同点:实例化:接口和抽象类都不能直接实例化,只能被实现(接口)或继承(抽象类)后才能创建具体的对象。抽象方法:接口和抽象类都可以包含抽象方法。抽象方法没有方法体,必须在子类或实现类中实现。区别:设计目的:接口主要用于对类的行为进行约束,你实现......
  • 物理学基础精解【130】
    文章目录求解联立方程求解三变量的联立线性方程示例三变量非线性联立方程可以使用`NLsolve`包求解示例说明在Julia中,符号求解三变量非线性联立方程示例1.安装`SymPy.jl`包2.使用`SymPy.jl`进行符号求解说明输出注意`Symbolics.jl`1.安装必要的包2.定义符......
  • 【北京迅为】itop-龙芯2k1000开发指南Linux基础入门vim 编辑器
     龙芯2K1000处理器集成2个64位GS264处理器核,主频1GHz,以及各种系统IO接口,集高性能与高配置于一身。支持4G模块、GPS模块、千兆以太网、16GB固态硬盘、双路UART、四路USB、WIFI蓝牙二合一模块、MiniPCIE等接口、双路CAN总线、RS485总线,扩展能力更强。龙芯2K1000已经广泛应用于工控......
  • 大数据-154 Apache Druid 架构与原理详解 基础架构、架构演进
    点一下关注吧!!!非常感谢!!持续更新!!!目前已经更新到了:Hadoop(已更完)HDFS(已更完)MapReduce(已更完)Hive(已更完)Flume(已更完)Sqoop(已更完)Zookeeper(已更完)HBase(已更完)Redis(已更完)Kafka(已更完)Spark(已更完)Flink(已更完)ClickHouse(已更完)Kudu(已更完)Druid(正在更新…)章节内容上节我们完成了如下的内容:Apa......
  • AI产品经理薪资30k起步?0基础可以转行AI产品经理吗?
    2024年,还有什么新风口?AI、元宇宙、NFT…很多人不知道,其实不管是元宇宙还是NFT,它们本质上就是人工智能领域。AI自身应用领域非常广泛,大批高薪岗位随之涌了出来,包括AI产品经理。AI产品经历具体工作内容是什么?薪资有多香?普通人如何进入AI人工智能行业?需要写代码吗?别急,我......
  • PostgreSQL基础(一)
    简介PostgreSQL是一个免费的对象-关系数据库服务器(ORDBMS),在灵活的BSD许可证下发行。PostgreSQL的Slogan是“世界上最先进的开源关系型数据库”号称是“开源界的Oracle”,去O首选PostgreSQL官网https://www.postgresql.org/PostgreSQL中文社区http://www.postqres.cn/v2/......
  • 基础数据结构(1)
    单链表与双链表的用处单链表单链表的存储:单链表的几种操作在表头插入一个数:先将这个数指向head指向的数,再将head指向这个数在表中的第k位后面插入一个数:先将这个数指向第k位指向的数,再将第k位指向这个数在表中删除一个数:让这个数直接指向下一个数的下一个数代码实现:/......