小明喜欢观景,于是今天他来到了蓝桥公园。

已知公园有 N 个景点,景点和景点之间一共有 M 条道路。小明有 Q 个观景计划,每个计划包含一个起点 st 和一个终点 ed,表示他想从 st 去到 ed。但是小明的体力有限,对于每个计划他想走最少的路完成,你可以帮帮他吗?

输入描述

输入第一行包含三个正整数 N,M,Q

第 2 到 M+1 行每行包含三个正整数 u,v,w,表示 u↔v 之间存在一条距离为 w 的路。

第 M+2M+2 到 M + Q-1M+Q−1 行每行包含两个正整数 st,edst,ed,其含义如题所述。

1\leq N\leq 4001≤N≤400,1\leq M \leq \dfrac{N\times(N - 1)}{2}1≤M≤2N×(N−1)​,Q\leq 10^3Q≤103,1\leq u,v,st,ed \leq n1≤u,v,st,ed≤n,1\leq w \leq 10^91≤w≤109

输出描述

输出共 Q 行,对应输入数据中的查询。

若无法从 st 到达 ed 则输出 −1。

输入输出样例

示例 1

输入

3 3 3
1 2 1
1 3 5
2 3 2
1 2
1 3
2 3

输出

1
3
2

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 128M

思路:

如何求任意两点之间最短路径呢?通过之前的学习我们知道通过深度或广度优先搜索可以求出两点之间 的最短路径。所以进行 遍深度或广度优先搜索,即对每两个点都进行一次深度或广度优先搜索,便可 以求得任意两点之间的最短路径。可是还有没有别的方法呢?

Floyd算法 又称为弗洛伊德算法、插点法,是解决给定的加权图 中顶点间的最短路径的一种算法,可以正确处理有向图或负权的最短路径问题,同时也被用于计算有向 图的传递闭包。该算法名称以创始人之一、1978年图灵奖获得者、斯坦福大学计算机科学系教授罗伯特· 弗洛伊德命名。 ( )

算法核心:任意节点 到 的最短路径两种可能: 1.直接从 到 ; 2.从 经过若干个节点 到 ; 所以我们可以枚举每一个经过的点,对于任意节点 和 节点 , 从上面俩种中选择一条最小的路径进行更 新。

核心转移方程: dis[i][j] = min(dis[i][j] , dis[i][k] + dis[k][j]);

优点:容易理解,可以算出任意两个节点之间的最短距离,代码编写简单 缺点:时间复杂度比较高,不适合计算大量数据。

时间复杂度:O(n^3) ;

空间复杂度:O(n^2) ;

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e3+10;
int dis[N][N];void floyd(int n){for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)for(int k=1;k<=n;k++)dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);
}signed main(){int n,m,q;int inf=1e15;cin>>n>>m>>q;memset(dis,0x3f,sizeof(dis));while(m--){int u,v;long long w;cin>>u>>v>>w;dis[u][v]=dis[v][u]=min(dis[u][v] , w);}for(int i=1;i<=n;i++) dis[i][i]=0;floyd(n);while(q--){int st,ed;cin>>st>>ed;if(dis[st][ed]>inf) cout<<-1<<endl;else cout<<dis[st][ed]<<endl;}return 0;}

蓝桥 蓝桥公园 Floyd相关推荐

  1. 蓝桥 蓝桥骑士 线性dp lis

    题目描述 小明是蓝桥王国的骑士,他喜欢不断突破自我. 这天蓝桥国王给他安排了 N 个对手,他们的战力值分别为 a1​,a2​,...,an​,且按顺序阻挡在小明的前方.对于这些对手小明可以选择挑战,也 ...

  2. 递增三元组蓝桥杯c语言,蓝桥-递增三元组-蓝桥

    蓝桥-递增三元组-蓝桥 蓝桥-递增三元组-蓝桥 手动求解一下会发现,B数组是关键 若固定b = B[i] a中的可能的取值是:a0 ----- at小于等于b的元素下标(小于b的个数) c中的可能取值 ...

  3. 蓝桥杯-最短路(floyd算法)

    算法训练 最短路   时间限制:1.0s   内存限制:256.0MB 问题描述 给定一个n个顶点,m条边的有向图(其中某些边权可能为负,但保证没有负环).请你计算从1号点到其他点的最短路(顶点从1到 ...

  4. 2018 蓝桥杯省赛 B 组模拟赛(一) 封印之门+最短路径之Floyd

    题目: 蒜头君被暗黑军团包围在一座岛上,所有通往近卫军团的路都有暗黑军团把手.幸运的是,小岛上有一扇上古之神打造的封印之门,可以通往近卫军团,传闻至今没有人能解除封印. 封印之门上有一串文字,只包含小 ...

  5. 最短路径——Floyd算法及优化(蓝桥杯试题集)

    *对最短路径问题以及floyd算法.Dijkstra算法不是很理解的同学请移步前几篇博客~ 题目链接: http://lx.lanqiao.cn/problem.page?gpid=T15 问题描述 ...

  6. 【最短路】Floyd算法:2020蓝桥最短路

    建图后 跑一遍Floyd #include <iostream> #include<cstring> using namespace std; const int N=200; ...

  7. 蓝桥杯--封印之门( Floyd算法)

    蒜头君被暗黑军团包围在一座岛上,所有通往近卫军团的路都有暗黑军团把手.幸运的是,小岛上有 一扇上古之神打造的封印之门,可以通往近卫军团,传闻至今没有人能解除封印.封印之门上有一串 文字,只包含小写字母 ...

  8. 2018蓝桥杯模拟赛(一)H【floyd求最短路径】

    蒜头君被暗黑军团包围在一座岛上,所有通往近卫军团的路都有暗黑军团把手.幸运的是,小岛上有一扇上古之神打造的封印之门,可以通往近卫军团,传闻至今没有人能解除封印. 封印之门上有一串文字,只包含小写字母, ...

  9. 【蓝桥杯算法模板题--蓝桥题库Java】

    PDF下载地址:点击即可 文章目录 ==算法模板== 1 排序(ArrayList,sort) 题目描述 输入描述 输出描述 输入输出样例 示例 1 运行限制 2 小明的彩灯(差分) 输入输出样例 示 ...

最新文章

  1. Altium Designer 正反面布元器件
  2. Redis Lua脚本中学教程(下)
  3. scala中字符串计数_如何在Scala中创建一系列字符?
  4. 3W | 跟着小小学会这些 Java 工程师面试题,月薪至少 3 W
  5. GDB的工作原理及skyeye远程调试
  6. 从零开始学前端:标签渐变和媒体查询 --- 今天你学习了吗?(CSS:Day25)
  7. 2019PKU\THU WC题解
  8. Zabbix4.2监控nginx状态
  9. Verdi的使用技巧总结
  10. 完整制作网吧系统全过程
  11. 小白进阶——Mike21(一)
  12. 转载-极化码系列(1)-极化码的起源和概述
  13. Windows Server2012 服务器修改密码过期时间
  14. 7-39 龟兔赛跑 (20 分) 乌龟与兔子进行赛跑,跑场是一个矩型跑道,跑道边可以随地进行休息。T分钟后乌龟和兔子谁跑得快?PTA:中M2021春C、Java入门练习第I段—变量、表达式、分支、循环
  15. Python基础---List(列表)
  16. 微信三方平台调试过程中遇到的问题
  17. 查看服务器配置以及常用命令
  18. S4D440Customcode adaption practice
  19. 淘宝/天猫获取sku详细信息 API 返回值说明
  20. Python描述 LeetCode 1037. 有效的回旋镖

热门文章

  1. 【杂谈第37期】用三句话了解BRD、MRD和PRD文档
  2. threadlocal使用场景_这玩意比ThreadLocal叼多了,吓得我赶紧分享出来
  3. 如何启用计算机的远程服务,远程桌面服务,详细教您怎么打开远程桌面服务
  4. nLite - 整合驱动程序 - PNP 驱动 与 文本模式驱动 的区别
  5. 数学专业英语--函数部分
  6. 河师大计算机技术专硕复试考什么,2021河南师范大学教育学硕士复试考什么-复试时间 - 希赛网...
  7. linux序列拼接软件,批量序列拼接工具:CAP3/PCAP下载
  8. 为CentOS安装防DDOS攻击软件DDoS-Deflate
  9. 抖音测试美甲软件,几款抖音最火美甲图片 最新网红美甲图案
  10. PerfDog性能狗(移动性能测试神器)