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

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

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

floyd算法可以说是最短路中最简单易上手的算法,但因为是O(3),所以效率较低

#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int manx = 510, INF = 1e9;
int dist[manx][manx];
int g[manx][manx];
int n, m, q;
void floyd()
{for(int k=1;k<=n;k++)for(int i=1;i<=n;i++)for (int j = 1; j <= n; j++)dist[i][j] = min(dist[i][j], dist[i][k] + dist[k][j]);//i,j两点的最短的距离
}
int main()
{cin >> n >> m >> q;for (int i = 1; i <= n; i++)for (int j = 1; j <= n; j++)if (i == j)dist[i][j] = 0;//去环else dist[i][j] = INF;while (m--){int a, b, c;cin >> a >> b >> c;dist[a][b] = min(dist[a][b], c);}floyd();while (q--){int x, y;cin >> x >> y;if (dist[x][y] > INF / 2)cout << "impossible" << endl;//中间有负权值所以极限会小于一点负无穷所以用INF/2来判断。else cout << dist[x][y]<<endl;}
}

Floyd算法学习笔记相关推荐

  1. 大顶堆删除最大值_算法学习笔记(47): 二叉堆

    堆(Heap)是一类数据结构,它们拥有树状结构,且能够保证父节点比子节点大(或小).当根节点保存堆中最大值时,称为大根堆:反之,则称为小根堆. 二叉堆(Binary Heap)是最简单.常用的堆,是一 ...

  2. Manacher算法学习笔记 | LeetCode#5

    Manacher算法学习笔记 DECLARATION 引用来源:https://www.cnblogs.com/grandyang/p/4475985.html CONTENT 用途:寻找一个字符串的 ...

  3. 数据结构与算法学习笔记之 从0编号的数组

    数据结构与算法学习笔记之 从0编号的数组 前言 数组看似简单,但掌握精髓的却没有多少:他既是编程语言中的数据类型,又是最基础的数据结构: 一个小问题: 为什么数据要从0开始编号,而不是 从1开始呢? ...

  4. 输出dag的所有拓扑排序序列_算法学习笔记(53): 拓扑排序

    拓扑排序是对DAG(有向无环图)上的节点进行排序,使得对于每一条有向边 , 都在 之前出现.简单地说,是在不破坏节点 先后顺序的前提下,把DAG拉成一条链.如果以游戏中的科技树(虽然名字带树,其实常常 ...

  5. 算法学习笔记:对指定金额计算最少钞票数

    算法学习笔记:对指定金额计算最少钞票数 一.引出问题 财务人员给员工发工资时经常遇到这样一个问题,即根据每个人的工资额(以元作为单位)计算出各种面值的钞票的张数,且要求总张数最少.例如,某职工工资为3 ...

  6. matlab中x从0到5不含0,关于MATLAB的数学建模算法学习笔记

    关于MATLAB的数学建模算法学习笔记 目录 线性规划中应用: (3) 非线性规划: (3) 指派问题;投资问题:(0-1问题) (3) 1)应用fmincon命令语句 (3) 2)应用指令函数:bi ...

  7. 机器学习篇01:在线学习的支持向量机算法学习笔记

    在线学习的支持向量机算法学习笔记 oisvm算法实现说明 oisvm算法实现说明 % 本程序是用于实现基于在线学习的调制信号识别的程序 % % % 第一步:调制信号的生成 % 首先是7个信号:2ASK ...

  8. 数据结构与算法学习笔记之 提高读取性能的链表(上)

    数据结构与算法学习笔记之 提高读取性能的链表(上) 前言 链表(Linked list)比数组稍微复杂一点,在我们生活中用到最常见的应该是缓存,它是一种提高数据读取性能的技术,常见的如cpu缓存,浏览 ...

  9. l2-004 这是二叉搜索树吗?_算法学习笔记(45): 二叉搜索树

    二叉搜索树(Binary Search Tree, BST)是一种常用的数据结构,在理想情况下,它可以以 的复杂度完成一系列修改和查询,包括: 插入一个数 删除一个数 查询某数的排名(排名定义为比该数 ...

最新文章

  1. 2021-04-06 符号执行是啥?
  2. MySQL SELECT同时UPDATE同一张表
  3. 数组实现栈,实现push,pop,size方法 -- 面试算法
  4. HDU 1879(最小生成树问题,Prim)
  5. 《现代操作系统》第4章读书笔记--文件系统(未完成)
  6. ArtVideoPlayer:一个灵活的视频播放器
  7. linux操作系统项目化教程课后答案,完整版Linux操作系统及应用项目教程习题答案(13页)-原创力文档...
  8. 【算法系列之线索化二叉树,前序线索化、中序线索化、后序线索化以及遍历~】
  9. 一所传闻要被“降级”的211高校,让这位网红教授“救活了”
  10. poj1681 Painter's Problem高斯消元
  11. awk教程入门与实例练习(二)
  12. 【软件测试】白盒测试のN-S图
  13. 15个常用excel函数公式_工作中常用的excel函数公式大全,拿来即用!
  14. 卷积神经网络识别车辆(自建+迁移学习)
  15. 解决:The server time zone value ‘�й���׼ʱ��‘ is unrecognized or represents more than one time zone.
  16. 【CODE】Longest Substring Without Repeating Characters
  17. exls表格搜索快捷键_excel搜索快捷键 如何在excel里快速找到需要的信息
  18. java 读取 doc_java如何读取doc文件
  19. OpenStack使用Placement做资源管理时虚拟机无法调度的一次排错记录
  20. 计算机大类考研科目,2022考研:计算机专业需要准备哪些科目?

热门文章

  1. 电脑怎么进行磁盘碎片整理?
  2. 《亚马逊逆向工作法》读书笔记
  3. IplImage、IplImage、Mat之间的转换
  4. 使用jwt技术实现系统间的单点登录
  5. Apache poi文件读取
  6. 免费领取中高职组计算机检测维修与数据恢复国赛考题
  7. Mac:都是过期证书惹的祸
  8. 天干地支计算公式_天干地支年月日时算法
  9. Latex术语表加边框
  10. scrt连接不到centos系统的解决办法