本来想用Floyd算法,可惜超时,毕竟复杂度太高,而且并没有必要求出任意两点间的最短距离。
求两点间的最短路有两种方法,dijkstra和Bellman ,前者不能有负圈,后者可以有负圈,另外,Floyd也可以求带负圈的最短距离。
我们只需要求出x到其他个点的最短距离和个点到它的最短距离就行了。当然,我所写的还求了很多多余的量,是可以优化的。
#include
#include
#inclu...
分类:
其他好文 时间:
2015-04-30 21:58:15
阅读次数:
202
一道简单的图论题,不过穿上了很好的外衣,实质就是一个任意两点间最短路问题,比较适合用Floyd算法
#include
#include
using namespace std;
const int INF = 100000;
int n,m,t,d[305][305],a[305];
int main() {
scanf("%d%d",&n,&m);
for(int i=1;i<...
分类:
其他好文 时间:
2015-04-26 18:24:49
阅读次数:
177
弗洛伊德(Floyd)算法主要是用于计算图中所有顶点对之间的最短距离长度的算法,如果是要求某一个特定点到图中所有顶点之间的最短距离可以用Dijkstra(迪杰斯特拉)算法来求。弗洛伊德(Floyd)算法的算法过程是:1、从任意一条单边路径开始。所有两点之间的距离是边的权,如果两点之间没有边相连,则权...
分类:
编程语言 时间:
2015-04-20 16:38:13
阅读次数:
349
Problem Description Einbahnstra e (German for a one-way street) is a street on which vehicles should only move in one direction. One reason for having one-way streets is to facilitate a smoother flo...
分类:
其他好文 时间:
2015-04-18 14:34:20
阅读次数:
170
Floyd算法的基本思想是:设集合S的初始状态为空,然后依次向集合S中加入顶点 0,1,...,n-1,每次加入一个顶点,用二维数组d保存各条最短路径的长度,其中d[i][j]存放的是顶点i到顶点j的最短路径的长度。
详细的说明:
Floyd算法中最重要的办法为二维数组d[i][j],d[i][j]为从i到j中间只经过S中的顶点的、所有可能的路径中的最短路径的长度。如果从i到j通过S中的节点无...
分类:
编程语言 时间:
2015-04-11 22:36:57
阅读次数:
191
题目来自于hihocoder
点击打开链接
时间限制:10000ms
单点时限:1000ms
内存限制:256MB
描述
万圣节的中午,小Hi和小Ho在吃过中饭之后,来到了一个新的鬼屋!
鬼屋中一共有N个地点,分别编号为1..N,这N个地点之间互相有一些道路连通,两个地点之间可能有多条道路连通,但是并不存在一条两端都是同一个地点的道路。
由于没有...
分类:
编程语言 时间:
2015-04-07 23:32:46
阅读次数:
216
Floyd-Warshall算法其实是比较容易理解也比较容易coding的DP... 不说了,上代码:#include #include #include #include #include #include #include #include #include using namespace st...
分类:
编程语言 时间:
2015-04-07 15:09:24
阅读次数:
133
正如我们所知道的,Floyd算法用于求最短路径。Floyd算法可以说是Warshall算法的扩展,三个for循环就可以解决问题,所以它的时间复杂度为O(n^3)。Floyd算法的基本思想如下:从任意节点A到任意节点B的最短路径不外乎2种可能,1是直接从A到B,2是从A经过若干个节点X到B。所以,我们...
分类:
编程语言 时间:
2015-04-07 11:26:33
阅读次数:
156
原题地址感觉Floyd算法比Dijkstra还要简单。。唯一需要注意的是,初始的距离默认值不要设过大,否则溢出就不好了,根据题意,只要大于10^3即可代码: 1 #include 2 #include 3 4 using namespace std; 5 6 #define MAX_POIN...
分类:
编程语言 时间:
2015-04-06 21:47:23
阅读次数:
276
Floyd算法
Floyd算法又称为插点法,是一种用于寻找给定的加权图中多源点之间最短路径的算法。该算法名称以创始人之一、1978年图灵奖获得者、斯坦福大学计算机科学系教授罗伯特·弗洛伊德命名。
注意:由下面的练习可以看出,其实很多题目不是直接问你floyd怎么求最短路径,而是要你利用floyd的动态规划思想解决类似floyd的问题。
Floy...
分类:
编程语言 时间:
2015-04-04 19:46:50
阅读次数:
207