今天看了弗洛伊德算法。
他的本质是动态规划。
就是图中两点之间如何求最短距离呢
假设有n个点
假如我们中间只能经过前一个点,那么就是这么写for(i=1;i<=n;i++)
{
for(j=1;j e[i][1]+e[1][j] )
e[i][j] = e[i][1]+e[1...
分类:
编程语言 时间:
2016-05-07 10:04:12
阅读次数:
168
原题:http://poj.org/problem?id=2391
#include
#include
#include
#include
#include
#define inf 1LL<<60
#define ll long long
using namespace std;
const int maxn = 500;
const int maxm = 50000;
int f, p...
分类:
其他好文 时间:
2016-05-07 09:28:20
阅读次数:
154
一个人的旅行 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 29572 Accepted Submission(s): 10160 Proble ...
分类:
其他好文 时间:
2016-05-06 02:10:47
阅读次数:
124
题目链接:http://codeforces.com/problemset/problem/666/B 大意是给一张有向图,选取四个点,使得走这四个点,任意两个点之间走最短路,总距离最长。 3000个点直接floyd肯定不行,但是注意到任意每条路距离都是1,其实可以枚举所有源点作bfs,求出距离数组 ...
分类:
其他好文 时间:
2016-05-06 02:03:35
阅读次数:
120
这是一道非常好的题目,融合了很多知识点。 ZOJ1232-Adventrue of Super Mario 这一题折磨我挺长时间的,不过最后做出来非常开心啊,哇咔咔咔 题意就不累述了,注释有写,难点在于状态转移方程的确立和SPFA的过程 ...
分类:
其他好文 时间:
2016-05-02 16:56:11
阅读次数:
140
虽然笔者在“算法-图论”的专栏中已经讨论过有关最短路径的问题,但是这里还是重新讨论一下,孔子也说过嘛,温故而知新。 所谓最短路径问题,就是基于一个图G<V、E>,图的边集E是带权的,然后讨论寻求某条连通两个点的路径,使得这条路径是所有连通该路径中边权最小的。 找到任意两点间的最短路径——Floyd- ...
分类:
编程语言 时间:
2016-05-02 13:03:08
阅读次数:
199
for(int k=1; k<=n; k++) for(int i=1; i<=n; i++) for(int j=1; j<=n; j++) { gra[i][j]=min(gra[i][j],gra[i][k]+gra[k][j]); } void Dijkstra(int n, int v, ...
分类:
编程语言 时间:
2016-04-21 20:04:38
阅读次数:
286
基本的状压dp 需要注意的是两点之间直线最短 所以不需要进行floyd 由于把dp的memset放在了初始化0的后面de了好久的bug.. ...
分类:
其他好文 时间:
2016-04-19 00:21:49
阅读次数:
119
转载自:http://www.cnblogs.com/biyeymyhjob/archive/2012/07/31/2615833.html 最短路径—Dijkstra算法和Floyd算法 Dijkstra算法 1.定义概览 Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节 ...
分类:
编程语言 时间:
2016-04-18 18:36:49
阅读次数:
252
图论中,用来求最短路的方法有很多,适用范围和时间复杂度也各不相同。
本文主要介绍的算法的代码主要来源如下:
Dijkstra: Algorithms(《算法概论》)Sanjoy Dasgupta, Christos Papadimitriou, Umesh Vazirani;《算法竞赛入门经典—训练指南》刘汝佳、陈峰。SPFA (Shortest Path Faster Algorit...
分类:
编程语言 时间:
2016-04-18 13:47:13
阅读次数:
348