这一算法与之前的Bellman-F=Ford算法一样,都可以判断负环 只需要检查dp [i] [j] 是负数的顶点i即可 1 // 求解任意两点间的最短路径问题 2 // Floyed-Warshall算法 3 // 复杂度O(N^3),N为顶点数 4 5 #include <cstdio> 6 # ...
分类:
编程语言 时间:
2020-02-16 19:07:56
阅读次数:
76
#include<string> #include <string.h> #include <stdio.h> #include <stdlib.h> #include <math.h> #include <algorithm> #include <queue> #include <vector> ...
分类:
其他好文 时间:
2020-02-14 11:08:50
阅读次数:
66
"题面" 看到数据范围这么小,第一眼想到爆搜。 然而这样做的复杂度是 $\mathcal{O}(n! \times n)$ 的,明显会 TLE。 于是考虑状压 DP。 我们设 $dp_{i,j}$ 表示当前走过的集合为 $i$,且停留在 $j$ 号点的最短路径长度。 转移的话可以枚举一个点 $k$, ...
无权最短路径 从图G中,选择s为开始的点,从s到s的最短路径是长为0的路径,将这个信息做个标记;然后开始寻找所有与s距离为1的顶点,将这些顶点做标记;然后开始找出从s出发最短路径恰为2的顶点;直到所有顶点已经被计算。 这种搜索一个图的方法称为 广度优先搜索(breadth first search) ...
分类:
编程语言 时间:
2020-02-12 21:58:02
阅读次数:
66
继续复习数据结构和算法,总结一下求解最短路径的一些算法。 弗洛伊德(floyd)算法 弗洛伊德算法是最容易理解的最短路径算法,可以求图中任意两点间的最短距离,但时间复杂度高达$O(n^3)$,主要思想就是如果想缩短从一个点到另一个点的距离,就必须借助一个中间点进行中转,比如A点到B点借助C点中转的话 ...
分类:
编程语言 时间:
2020-02-10 00:08:40
阅读次数:
70
给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。 法1): 本题典型的回溯算法,但是没有剪枝,在42/43个case的时候超时了,以下是代码。 PS:尝试过如果当前和大于全局最小,则停止,但是由于有负数的存在,现在大的值也可以通过-9999成为最小值,剪枝失败。 cl ...
分类:
其他好文 时间:
2020-02-08 17:23:49
阅读次数:
72
有个N叉树是个大食堂的地图。节点有的是餐馆,有的不是,在输入里面用boolean表示了。每个父节点到子节点的距离都是一。你作为一个吃货,从根节点出发,要去所有的餐馆尝尝,需要的最短路径是多少。楼主DFS返回两个量,一个是这个节点为根的树要吃完需要的走多长的路,另一个是一个flag表示这个子树里面有没 ...
分类:
其他好文 时间:
2020-02-06 10:59:57
阅读次数:
66
原题链接 https://pintia.cn/problem sets/994805342720868352/problems/994805489282433024 思路 本来准备用迪杰斯特拉算法先求出最短路径,再对每条最短路径进行深度遍历计算带出的车辆和带回的车辆进行比较。后来参考网上一位大神的做 ...
分类:
其他好文 时间:
2020-02-03 11:56:53
阅读次数:
81
PAT (Advanced Level) 大纲 在达到乙级要求的基础上,还要求: 具有充分的英文阅读理解能力; 理解并掌握基础数据结构,包括:线性表、树、图; 理解并熟练编程实现经典高级算法,包括哈希映射、并查集、最短路径、拓扑排序、关键路径、贪心、 "深度优先搜索" 、广度优先搜索、回溯剪枝等; ...
分类:
其他好文 时间:
2020-02-02 21:41:12
阅读次数:
102
深搜和广搜是图很多算法的基础,很多图的算法都是从这两个算法中启发而来。 深搜简单地说就是直接一搜到底,然后再回溯,再一搜到底,一直如此循环到没有新的结点。 广搜简单地说就是一层一层的搜,像水的波纹一样往外面扩散,扩散到最外层搜索也就完成了。 prim最小生成树、Dijkstra单源最短路径算法都使用 ...
分类:
编程语言 时间:
2020-02-01 21:24:01
阅读次数:
201