图解弗洛伊德算法
来源:互联网 发布:沁人缘总裁团 淘宝网 编辑:程序博客网 时间:2024/05/22 04:20
弗洛伊德算法与迪杰斯特拉算法的区别就是弗洛伊德算法可以求所有的点的最短路径
但是弗洛伊德算法的复杂度是O(n^3) 阿杰算法是O(n^2)
弗洛伊德算法的两个矩阵
第一个是邻接矩阵(是本图论的书就会有介绍)
第二个是P矩阵
解释一下P矩阵就是那第一行来举例子
第一行v0-v8的值的意思就是从v0走到v8那么v0下一个就是v1
对vij也中的数也是这个意思如果从vi走到vj那么vi的下一个节点就是vij的值
核心判断算法就是
以下是源码
#include<cstdio>
#include<cstring>#include<iostream>
using namespace std;
const int N = 100;
int map[N][N],n,m;
int main()
{
int x,y,z;
scanf("%d%d",&n,&m);
memset(map,0x3f,sizeof(map));
//初始化赋权值
for(int i=0;i<m;i++){
scanf("%d%d%d",&x,&y,&z);
map[x][y] = map[y][x] = z;
}
//弗洛伊德算法核心程序
for(int k=1;k<=n;k++)
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(map[i][j] > map[i][k] + map[k][j])
{
map[i][j] = map[i][k] + map[k][j];
}
}
}
}
while(~scanf("%d%d",&x,&y))
{
printf("%d\n",map[x][y]);
}
return 0;
}
/*
10 12
1 4 1
1 5 1
1 6 1
4 8 1
4 3 1
3 5 1
5 7 1
3 7 1
6 2 1
7 2 1
7 10 1
2 9 1
*/
阅读全文
1 0
- 图解弗洛伊德算法
- 弗洛伊德算法
- 【弗洛伊德算法】
- 弗洛伊德算法
- 弗洛伊德算法
- 弗洛伊德算法
- 弗洛伊德算法
- 弗洛伊德算法
- 弗洛伊德算法
- 弗洛伊德算法
- 弗洛伊德算法求最短路径
- 弗洛伊德(Floyd)算法
- 弗洛伊德(Floyd)算法
- flod弗洛伊德算法详解
- C++实现弗洛伊德算法
- 弗洛伊德(Floyd)算法
- 弗洛伊德算法详解
- 弗洛伊德算法(Floyd)
- 求最长不下降序列
- 数字排列 (HUST-1586)
- 指针函数与函数指针的详解
- 9.使用 curses 函数库来管理基于文本的屏幕
- 关于string的内存机制
- 图解弗洛伊德算法
- 文章标题
- C语言实现单链表面试题(基础篇)
- AI与医学辅助诊断
- 设计模式之简单工厂模式(Simple Factory)
- 使用qemu模拟arm开发板
- 【HDU 1754】I Hate It
- HashMap源码解析——关键属性
- Tkinter教程之Event篇(3)