首先用spfa找一条最短路当然这个最短路是按照边的费用算的,在找的过程中,如果这条边的流量已经为0,就一定要放弃这个到达的点,也就是不仅判断dis,也要判断流量·。 其次,从这条路的结束点(汇点)往它的前驱回溯,找到这个路径上最小的流,每一个流都减去这个最小的流,总流量加上这个最小的流。 每一个边, ...
分类:
其他好文 时间:
2019-01-20 15:56:12
阅读次数:
196
void Add(int u,double cost,int v)//邻接表存储关系 { w[top] = cost; Key[top] = v; next[top] = head[u]; head[u] = top++; } bool SPFA(int x) { memset(vis,false, ...
分类:
其他好文 时间:
2019-01-20 15:09:05
阅读次数:
219
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1142 题意:有n个点,m条边带权的无向图,点1为起点,点2为终点。求点1到点2有几条路,路的限制是每过一个点,都要后点到2的距离小于前点的距离。 思路:先用spfa/dijkstra算一遍每个点到2的最 ...
分类:
其他好文 时间:
2019-01-20 15:03:46
阅读次数:
211
这里给大家介绍三种最短路常用算法: floyd(O(n^3))、dijkstra(O(nlogn))、SPFA(O(KE))(k是进队列次数,在没有负环的情况下2) 其实还有一个Bellman Ford(O(nm))算法,但由于不常用而且SPFA是这个算法的改进版本,在这里就不列举了 floyd:效 ...
分类:
编程语言 时间:
2019-01-19 21:07:57
阅读次数:
265
适用于:稀疏图(侧重于对边的处理)。 时间复杂度:O(KE),K是常数,平均值为二,E是边数。(因为和边有关,所以不适于稠密图) 来源:SPFA是Bellman-Ford算法的一种队列实现,减少了不必要的冗余计算。 这个算法简单地说就是队列优化的Bellman-Ford,利用了每个点不会更新次数太多 ...
分类:
编程语言 时间:
2019-01-17 16:26:00
阅读次数:
157
这个题要求我们寻找最多的旅费,第一次看了一个题解(一个动态规划)三四十行代码就可以写过了,但是我还不太会啊;; 所有写一个双向spfa来写这个题,正向,反向各建一个图,所以我们跑两个spfa,第一个spfa我们找到能从起点到达这个点的最小买入点; 首先买点呢我们要保证能从起点到达,并且能够到达终点, ...
分类:
其他好文 时间:
2019-01-12 14:20:58
阅读次数:
180
题目描述 题解: 最大费用流。 每个点向后面不小于它的点建一条容量为$1$,费用$-1$的边。 $S$向所有点建容量为$1$的入边(费用为$-1$),所有点向$T$建容量为$1$的出边(费用为$0$)。 然后最大费用流。 由于第一次得到的通路是费用最小的,这个费用的相反数就是问题一的答案。 然后继续 ...
分类:
其他好文 时间:
2019-01-11 20:16:54
阅读次数:
196
作曲 : Menci/24OI 作词 : Menci/24OI 歌词: 屏幕在深夜微微发亮 思想在那虚树路径上彷徨 平面的向量交错生长 织成 忧伤的网 剪枝剪去我们的疯狂 SPFA告诉我前途在何方 01背包装下了忧伤 笑颜 洋溢脸庞 键盘微凉 鼠标微凉 指尖流淌 代码千行 凸包周长 直径多长 一进考 ...
分类:
其他好文 时间:
2019-01-03 22:34:47
阅读次数:
307
今天先写一些基础的图论知识;1.floyed算法;2.spfa算法; 3.dijkstra(迪杰斯特拉)算法;(先不写)1.floyed算法可以找到任意两点之间的最短路,即dis[i][j];原理:图的传递闭包思想;时间复杂度:O(n*n*n); 思想也比较好理解(三角形任意两边之和大于第三边嘛,如 ...
分类:
其他好文 时间:
2019-01-01 14:06:21
阅读次数:
256