当前位置: 首页 > news >正文

AcWing 854. Floyd求最短路Floyd模板

Floyd算法:

标准弗洛伊德算法,三重循环,基于动态规划。

循环结束之后 d[i][j]存储的就是点 i 到点 j 的最短距离。

需要注意循环顺序不能变:第一层枚举中间点,第二层和第三层枚举起点和终点。

特点:

        1.复杂度为O(n^3),只能处理200以内的点。

        2.一次求出所有结点直接的最短路径。

        3.能处理有负权边的图。
 

Floyd模板:

#include<bits/stdc++.h>
using namespace std;
const int INF=0x3f3f3f3f;
const int N=205;
int n,m,d[N][N];
int main(){scanf("%d%d%d",&n,&m);//初始化 for(int i=1;i<=n;i++)		for(int j=1;j<=n;j++)d[i][j]=i==j?0:INF;	//自己到自己的距离为0 //输入边	for(int i=0,x,y,w;i<m;i++){scanf("%d%d%d",&x,&y,&x);d[x][y]=d[y][x]=min(d[x][y],w);}//Floyd核心代码 for(int k=1;k<=n;k++){for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){
//				if(d[i][k]==INF||d[k][j]==INF) continue; //防止负权影响INF if(d[i][j]>d[i][k]+d[k][j])d[i][j]=d[i][k]+d[k][j];
//				e[i][j]=min(e[i][j],e[i][k]+e[k][j]);	//数据量大时,min会慢一些 }}}cout<<d[1][n];return 0;
} 

AcWing 854. Floyd求最短路

给定一个 nn 个点 mm 条边的有向图,图中可能存在重边和自环,边权可能为负数。

再给定 kk 个询问,每个询问包含两个整数 xx 和 yy,表示查询从点 xx 到点 yy 的最短距离,如果路径不存在,则输出 impossible

数据保证图中不存在负权回路。

输入格式

第一行包含三个整数 n,m,kn,m,k。

接下来 mm 行,每行包含三个整数 x,y,zx,y,z,表示存在一条从点 xx 到点 yy 的有向边,边长为 zz。

接下来 kk 行,每行包含两个整数 x,yx,y,表示询问点 xx 到点 yy 的最短距离。

输出格式

共 kk 行,每行输出一个整数,表示询问的结果,若询问两点间不存在路径,则输出 impossible

数据范围

1≤n≤200 1≤n≤200,
1≤k≤n2 1≤k≤n2
1≤m≤20000 1≤m≤20000,
图中涉及边长绝对值均不超过 1000010000。

输入样例:

3 3 2
1 2 1
2 3 2
1 3 1
2 1
1 3

输出样例:

impossible
1

代码: 

#include<bits/stdc++.h>
using namespace std;
const int INF=0x3f3f3f3f;
const int N=205;
int n,m,k,x,y,z,e[N][N];
int main(){scanf("%d%d%d",&n,&m,&k);for(int i=1;i<=n;i++)		//初始化 for(int j=1;j<=n;j++)e[i][j]=i==j?0:INF;for(int i=0;i<m;i++){scanf("%d%d%d",&x,&y,&z);e[x][y]=min(e[x][y],z);}for(int k=1;k<=n;k++){for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){if(e[i][k]==INF||e[k][j]==INF) continue;	//防止负权影响INF,或者在输出的时候判断e[x][y]>INF/2 if(e[i][j]>e[i][k]+e[k][j])e[i][j]=e[i][k]+e[k][j];
//				e[i][j]=min(e[i][j],e[i][k]+e[k][j]);	//数据量大时,min会慢一些 }}}while(k--){scanf("%d%d",&x,&y);if(e[x][y]==INF) cout<<"impossible"<<endl;	//存在负权时,如果不存在通路,不一定是INF,会小一些 else cout<<e[x][y]<<endl;}return 0;
} 

相关文章:

AcWing 854. Floyd求最短路Floyd模板

Floyd算法&#xff1a; 标准弗洛伊德算法&#xff0c;三重循环&#xff0c;基于动态规划。 循环结束之后 d[i][j]存储的就是点 i 到点 j 的最短距离。 需要注意循环顺序不能变&#xff1a;第一层枚举中间点&#xff0c;第二层和第三层枚举起点和终点。 特点&#xff1a; 1.复杂…...

Graph Theory(图论)

一、图的定义 图是通过一组边相互连接的顶点的集合。 In this graph, V { A , B , C , D , E } E { AB , AC , BD , CD , DE } 二、图的类型 2.1 Finite Graph A graph consisting of finite number of vertices and edges is called as a finite graph. Null Graph Tri…...

[Python]生成 txt 文件

前段时间有位客户问: 你们的程序能不能给我们生成个 txt 文件,把新增的员工都放进来,字段也不需要太多,就要 员工姓名/卡号/员工编号/员工职位/公司 这些字段就行了,然后我们的程序会去读取这个 txt 文件,拿里面的内容,读完之后会这个文件删掉 我: 可以接受延迟吗?可能没办法实…...

GeoTools实战指南: 自定义矢量样式并生成截图

GeoTools实战指南: 自定义矢量样式并生成截图 介绍 本段代码的主要功能是将矢量数据(Shapefile)渲染成一张图片。 准备环境 首先,您需要将GeoTools库添加到您的项目中。使用Maven或Gradle添加依赖项,或者直接下载GeoTools的jar文件并添加到您的类路径中。 Maven <…...

深度学习超参数调整介绍

文章目录 深度学习超参数调整介绍1. 学习率2. 批大小3. 迭代次数4. 正则化5. 网络结构总结 深度学习超参数调整介绍 深度学习模型的性能很大程度上取决于超参数的选择。超参数是指在训练过程中需要手动设置的参数&#xff0c;例如学习率、批大小、迭代次数、网络结构等等。选择…...

Bootloader

本篇不作太过的技术了解&#xff0c;仅可作为初学者的参考。用嘴简单的语言讲清楚一件事。 项目中遇到Bootloader升级MCU&#xff0c;我很好这是什么软件&#xff0c;逻辑是什么&#xff0c;怎么升级的。 术语及定义 指纹信息fingerprint诊断仪用于标识特定的下载尝试的信息 …...

安卓开发_广播机制_广播的最佳实践:实现强制下线功能

安卓开发_广播机制_广播的最佳实践&#xff1a;实现强制下线功能 ActivityCollector类用于管理所有的ActivityBaseActivity类作为所有Activity的父类创建一个LoginActivity来作为登录界面布局LoginActivity 在MainActivity中加入强制下线功能布局MainActivity在BaseActivity中注…...

国民技术N32G430开发笔记(10)- IAP升级 Application 的制作

IAP升级 Application 的制作 1、App程序跟Bootloader程序最大的区别就是&#xff0c; 程序的执行地址变成了之前flash设定的0x08006000处&#xff0c; 大小限制为20KB 所以修改Application工程的ld文件 origin 改成 0x08006000 length 改成0x5000 烧录是起始地址也要改为x0x…...

[计算机图形学]材质与外观(前瞻预习/复习回顾)

一、图形学中的材质 不同的物体表面有着不同的材质&#xff0c;而不同的材质意味着它们与光线的作用不同。那么我们之前在介绍辐射度量学和渲染方程提到过其中一个函数&#xff0c;叫做BRDF&#xff0c;而在实际上&#xff0c;也就是BRDF定义了不同的材质。BRDF决定了光如何被反…...

Java 的简要介绍及开发环境的搭建(超级详细)

图片来源于互联网 目录 | CONTENT Java 简介 一、什么是 Java 二、认识 Java 版本 三、选择哪个版本比较好 搭建 Java 开发环境 一、下载 Java 软件开发工具包 JDK 二、配置环境变量 自动配置 手动配置 三、下载合适的 IDE IntelliJ IDEA Visual Studio Code Eclip…...

每天一道算法练习题--Day15 第一章 --算法专题 --- -----------二叉树的遍历

概述 二叉树作为一个基础的数据结构&#xff0c;遍历算法作为一个基础的算法&#xff0c;两者结合当然是经典的组合了。很多题目都会有 ta 的身影&#xff0c;有直接问二叉树的遍历的&#xff0c;有间接问的。比如要你找到树中满足条件的节点&#xff0c;就是间接考察树的遍历…...

golang - 函数的使用

核心化编程 为什么需要函数&#xff1f; 代码冗余问题不利于代码维护函数可以解决这个问题 函数 函数&#xff1a;为完成某一功能的程序指令&#xff08;语句&#xff09;的集合&#xff0c;称为函数 在 Go 中&#xff0c;函数分为&#xff1a;自定义函数&#xff08;自己写…...

真题详解(极限编程)-软件设计(六十一)

真题详解&#xff08;二分查找平均值&#xff09;-软件设计&#xff08;六十)https://blog.csdn.net/ke1ying/article/details/130417464 VLANtag属于 数据链路层实现。 数据链路层&#xff1a;网桥交换机。 网络层&#xff1a;路由器。 物理层&#xff1a;中继器。 Telent…...

计算机网络笔记:TCP粘包

默认情况下, TCP 连接会启⽤延迟传送算法 (Nagle 算法), 在数据发送之前缓存他们. 如果短时间有多个数据发送, 会缓冲到⼀起作⼀次发送 , 这样可以减少 IO 消耗提⾼性能。 如果是传输⽂件的话, 那么根本不⽤处理粘包的问题, 来⼀个包拼⼀个包就好了。但是如果是多条消息, 或者…...

Vue(标签属性:ref、配置项:props、混入mixin、插件、样式属性:scroped)

一、ref&#xff08;打标识&#xff09; 前面提及到了标签属性&#xff1a;keys 这里将了解ref&#xff1a;打标识 正常布置脚手架并创建入口文件main.js,引入组件 1. 可以给元素注册引用信息&#xff08;获取真实DOM&#xff09; 给一个按钮获取上方的dom的方法&#xff0c;方…...

数仓建设规划核心问题!

小A进入一家网约车出现服务公司&#xff0c;负责公司数仓建设&#xff0c;试用期主要一项 OKR是制定数据仓库建设规划&#xff1b;因此小 A 本着从问题出发为原点&#xff0c;先对公司数仓现状进行一轮深入了解&#xff0c;理清存在问题&#xff0c;然后在以不忘初心原则提出解…...

容器镜像的导入导出

容器镜像的导入导出 第1关&#xff1a;导入导出容器 任务描述 ​ 本关任务是学习导入导出容器&#xff0c;要求学习者参照示例完成将busyboxContainer容器的文件系统保存为一个tar包&#xff0c;通过该tar包导入一个busybox:v1.0镜像。 相关知识 将 "容器的文件系统&…...

Java每日一练(20230502)

目录 1. 二叉搜索树的最近公共祖先 &#x1f31f;&#x1f31f; 2. 随机分组问题 &#x1f31f; 3. K 个一组翻转链表 &#x1f31f;&#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练…...

JVM学习(九):堆

一、堆&#xff08;Heap&#xff09;的概述 一个JVM实例只存在一个堆内存&#xff0c;堆也是Java内存管理的核心区域。 Java堆区在JVM启动的时候即被创建&#xff0c;其空间大小也就确定了。是JVM管理的最大一块内存空间。同时&#xff0c;堆内存的大小是可以调节的。《Java虚拟…...

golang - switch

switch 的使用 switch 语句用于基于不同条件执行不同操作&#xff0c;&#xff0c;直每一个 case 分支都是唯一的&#xff0c;从上到下逐一测试到匹配为止匹配项后面也不需要再加 break switch 表达式 {case 表达式1, 表达式2, ... :语句块1case 表达式2, 表达式3, ... :语句块…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘

美国西海岸的夏天&#xff0c;再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至&#xff0c;这不仅是开发者的盛宴&#xff0c;更是全球数亿苹果用户翘首以盼的科技春晚。今年&#xff0c;苹果依旧为我们带来了全家桶式的系统更新&#xff0c;包括 iOS 26、iPadOS 26…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

Java 语言特性(面试系列1)

一、面向对象编程 1. 封装&#xff08;Encapsulation&#xff09; 定义&#xff1a;将数据&#xff08;属性&#xff09;和操作数据的方法绑定在一起&#xff0c;通过访问控制符&#xff08;private、protected、public&#xff09;隐藏内部实现细节。示例&#xff1a; public …...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见&#xff0c;必须要保持数据不可变&#xff0c;管理员都无法修改和留痕的要求。比如医疗的电子病历中&#xff0c;影像检查检验结果不可篡改行的&#xff0c;药品追溯过程中数据只可插入无法删除的特性需求&#xff1b;登录日志、修改日志…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法&#xff1a;netstat [选项] 功能&#xff1a;查看网络状态 常用选项&#xff1a; n 拒绝显示别名&#…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享

文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的&#xff0c;根据Excel列的需求预估的工时直接打骨折&#xff0c;不要问我为什么&#xff0c;主要…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明

AI 领域的快速发展正在催生一个新时代&#xff0c;智能代理&#xff08;agents&#xff09;不再是孤立的个体&#xff0c;而是能够像一个数字团队一样协作。然而&#xff0c;当前 AI 生态系统的碎片化阻碍了这一愿景的实现&#xff0c;导致了“AI 巴别塔问题”——不同代理之间…...

【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)

要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况&#xff0c;可以通过以下几种方式模拟或触发&#xff1a; 1. 增加CPU负载 运行大量计算密集型任务&#xff0c;例如&#xff1a; 使用多线程循环执行复杂计算&#xff08;如数学运算、加密解密等&#xff09;。运行图…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...