算法总结——Floyed

Floyed:

复杂度:O(n^3)

用途:求一条路走完所有的地方的的最小值,很简单,就三个for,一般写floyed不谢bellman_ford~~~

适用条件:遍历所有的点,适合于稠密图,floyed与bellman_ford算法之间的区别就是floyed计算了从每一点开始的值,最后只要选取就行,方便写,但是复杂度高了

原理:利用邻接矩阵判断,而bellman_ford是利用一个数组d进行判断(其实应该可以相互转换把- -||)

步骤:1.把所有的边赋值无穷大,能通过的赋值 2. 三个for循环,k,i,j,  k表示从i->j可以走i->k->j,不断取小值 3.选取出发点和结束点,直接输出就是最短路

模板:

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int  MAX = 300;
const int inf = 0x3f3f3f3f;
int d[MAX],map[MAX][MAX];
int main()
{
    int n,m;
    scanf("%d%d",&n,&m);
    for(int i = 1; i <= n ; i++)
        for(int j = 1; j <= n; j++)
          map[i][j] = inf;
    int x, y, t;
    for(int i = 1;i <=m;i++){
        scanf("%d%d%d",&x,&y,&t);
        map[x][y] = t;
    }
    for(int k = 1; k <= n ;k++){
        for(int i = 1; i <= n; i++){
            for(int j = 1; j <= n;j++){
                    if(i!=k&&i!=j)
                map[i][j] = min(map[i][j], map[i][k]+map[k][j]);
            }
        }
    }
    printf("%d",map[1][2]);
    return 0;
}
时间: 2025-01-12 14:53:57

算法总结——Floyed的相关文章

最短路算法(floyed+Dijkstra+bellman-ford+SPFA)

最短路算法简单模板 一.floyed算法 首先对于floyed算法来说就是最短路径的动态规划解法,时间复杂度为O(n^3) 适用于图中所有点与点之间的最短路径的算法,一般适用于点n较小的情况. Floyed算法有三层循环,循环的层次先后顺序也是比较重要的,分别为k ,i,j:因为dis[k][i][j]代表的是i节点到j节点的最短路如果中间经过节点k的话dis[k][i][j] =dis[k-1][i][k]+dis[k-1][k][j]:否则dis[k][i][j] = dis[k-1][i]

NOIp2014 解题报告

有史以来第一届面向社会征题的NOIp结束了.最开始以为面向社会征题会很难,但是这是我参加的最水的一次NOIp了. 由于停了两月的课,所以现在正在补文化科目就没时间打代码了.所以所有的题目就均不给出代码了啦啦啦~为了方便没有参加NOIP的童鞋们我把题目网址放到了每道题题解的最后. 晚了两周的题解如下: Day1T1 生活大爆炸版石头剪刀布 我就不说了..近几年来NOIp最水的第一题(我会告诉你我去年第一题用的是30分算法?)我们这里有一位小伙伴本地测试AC,但是官方爆0了.我们特意下载了NOI L

2014暑假ACM13级一批集训内容

2014 这个暑假,我大一的暑假来吧!!! 2014暑假ACM13级一批集训内容 集训期间时间安排: 周一到周六 上午:8:00-11:30 下午:2:00-5:30 晚上7:00-9:30 周日自由休息 集训形式: 1,每周一三五讲解知识点,其他时间消化吸收掉这些知识点. 2,每周六进行对本周知识的测试. 考核方式及要求: 1,根据平时练习+比赛的完成情况排名.不只是看每次比赛的排名,更重要的是自己的态度和进步的幅度. 2,无故迟到/缺勤 3,期间严禁玩游戏,严禁长时间聊天,严禁看视频 4,练

Java研发工程师知识点总结

Java研发工程师知识点总结 最近一次更新2017年12月08日 大纲 一.Java基础(语言.集合框架.OOP.设计模式等) 二.Java高级(JavaEE.框架.服务器.工具等) 三.多线程和并发 四.Java虚拟机 五.数据库(Sql.MySQL.Redis等) 六.算法与数据结构 七.计算机网络 八.操作系统(OS基础.Linux等) 九.其他 一.Java基础(语言.集合框架.OOP.设计模式等) 1. HashMap和Hashtable的区别 Hashtable是基于陈旧的Dicti

Dijkstra算法和Floyed算法

写的比较好的三篇文章 Floyed算法 最短路径-Dijkstra算法和Floyed算法 最短路径之Dijkstra算法和Floyed算法 哈哈,他山之石,可以攻玉 自己有心得,慢慢补充

floyed算法

Floyed算法(实际是动态规划问题) 问题:权值矩阵matrix[i][j]表示i到j的距离,如果没有路径则为无穷 求出权值矩阵中任意两点间的最短距离 分析:对于每一对定点u,v看是否存在一个点w使从u到w再到v的路径长度比已知路径短 如果有则更新从u到w的距离 参考网页 1:不用状态压缩的动态规划算法: 状态定义:d[1][i][j]表示以1作为媒介时从i到j的最短距离 d[2][i][j]表示以1,2中的点作为媒介时从i到j的最短距离 …… d[n][i][j]表示以1,2, ……n中的点

Floyed算法 O(N3) x

Floyed算法 O(N3) 简称Floyed(弗洛伊德)算法,是最简单的最短路径算法,可以计算图中任意两点间的最短路径.Floyed的时间复杂度是O (N3),适用于出现负边权的情况. 算法分析&思想讲解: 三层循环,第一层循环中间点k,第二第三层循环起点终点i.j,算法的思想很容易理解:如果点i到点k的距离加上点k到点j的距离小于原先点i到点j的距离,那么就用这个更短的路径长度来更新原先点i到点j的距离. 我们在初始化时,把不相连的点之间的距离设为一个很大的数,不妨可以看作这两点相隔很远很远

[ACM] 最短路算法整理(bellman_ford , SPFA , floyed , dijkstra 思想,步骤及模板)

以杭电2544题目为例 最短路 Problem Description 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt.但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要寻找最短的从商店到赛场的路线,你可以帮助他们吗? Input 输入包括多组数据.每组数据第一行是两个整数N.M(N<=100,M<=10000),N表示成都的大街上有几个路口,标号为1的路口是商店所在地,标号为N的路口是赛场所在地,M则表示在成都有几条路.N=M=0

floyed算法的一些感想

虽然我还在学动态规划,但这并不影响我去试图研究floyed,在对floyed算法进行研究了40min后,我感觉我似乎应该好像是勉强理解了floyed算法 for(int k=1;k<=n;k++) for(int i=1;i<=n;i++) for(int j=1;j<=k;j++) if(f[i][k]+f[k][j]<f[i][j]) f[i][j]=f[i][k]+f[k][j]; 以上为floyed的基础模板.Floyed算法,用来计算这个图上任意点对间的距离,3重循环,简