多源最短路(floyd)
来源:互联网 发布:java面向对象编程继承 编辑:程序博客网 时间:2024/06/05 15:46
floyd
就是很简单很简单的一种dp
3个for循环就出结果
看代码就可以知道,floyd就是通过遍历可能会出现i-j比i-k+k-j大的情况,很简单。
贴一个水题http://codevs.cn/problem/1077/
floyd考的话也是和其他算法一起考
一般情况下由于floyd的本质,n方的邻接链表矩阵反而更有效率。
#include<cstdio>using namespace std;int map[100 + 7][100 + 7];int n,q,a,b;void floyd(){ for(int k = 1;k <= n;k ++)//中间点 for(int i = 1;i <= n;i ++)//起点 for(int j = 1;j <= n;j ++)//终点 if(map[i][k] + map[k][j] < map[i][j])//这里就是更新 map[i][j] = map[i][k] + map[k][j];}int main(){ scanf("%d",&n); for(int i = 1;i <= n;i ++) for(int j = 1;j <= n;j ++) scanf("%d",&map[i][j]); scanf("%d",&q); floyd(); while(q --) { scanf("%d%d",&a,&b); printf("%d\n",map[a][b]); }}
可以通过floyd求最小环
int mincircle = INF;for(int k = 1;k <= n;k ++) for(int i = 1;i <= n;i ++) for(int j = 1;j <= n;++ j) { if(dis[i][j] != INF && map[j][k] != INF && mao[k][i] != INF &&dis[i][j] + map[j][k] + map[k][i] < mincircle) mincircle = min(mincircle,dis[i][j] + map[j][k] + mao[k][i]);//严格n3方,还是tarjan好。 }
阅读全文
0 0
- 多源最短路(floyd)
- 多源最短路(Floyd算法)
- Floyd算法(多源最短路算法)
- FLOYD 多源最短路
- 多源最短路:floyd
- 多源最短路->Floyd算法
- codevs1077 多源最短路 Floyd
- Floyd多源最短路算法
- 最短路(floyd)
- Codevs 1077 多源最短路 Floyd
- 最短路算法(Floyd)
- UVA104Arbitrage(floyd最短路)
- hdu1690(最短路floyd)
- 最短路poj2253(floyd)
- hdu2544 最短路 (floyd)
- 最短路(Floyd算法)
- POJ 1125 Stockbroker Grapevine(Floyd多源最短路)
- hdu 2066 一个人的旅行 (多源最短路 Floyd)
- Android、ios双平台车牌识别,无需联网
- 济南刷题冲刺 Day1 下午
- c语言大数加法
- Keras指定使用GPU运算
- Python高级编程-如何为元祖中的每个元素命名,提高程序可读性?
- 多源最短路(floyd)
- 并发编程(10)-queue
- 矩阵连乘----动态规划
- Java后台调用第三方支付接口(易宝支付)
- 普通用户与root用户的相互切换
- 【C++】模拟实现String类
- Reinforcement Learning:An Introduction 读书笔记- Chapter 1
- eclipse安装可提示js的插件(Eclipse HTML Editor)
- 异步编程