
图论
衛宮
I will be back
展开
-
[CodeForces20C]Dijkstra?(Prim, Dijkstra)
这道题只需要在计算最短路的时候, 记录当前最小边的端点即可, 用faz[]数组.需要注意的是, 节点1只需要到节点N即可, 不需要整个图都联通. 可以用并查集, 也可以在Dijkstra算法后, 看一下dist[N](节点N到节点1的最短距离)是否为初值.开始的时候, 我的第一个思路是建立一个最短路径生成树, 然后在遍历这颗树, 从1开始, 到N的路径只有一条.但是我在提交的时候一直卡...原创 2018-07-28 22:27:56 · 288 阅读 · 0 评论 -
最小生成树MST的三个简单应用
kruskal算法相当简单直观~还比prim好用~应用一, 求最大权值最小的最小生成树.仔细想一想, 最小生成树的最大权值就是最小的.应用二, 求次小生成树.先求一个最小生成树, 然后枚举这个最小生成树的每一条边, 然后计算分别删去这个边的图的最小生成树, 一共有n - 1个, 次小生成树一定是这几个.poj1679的问图的最小生成树是否为一, 可以先求最小生成树, 在求次小生...原创 2018-07-27 18:07:52 · 578 阅读 · 0 评论 -
[计蒜客]威虎山上的分配
问题是这样的, n个人, m个二元组, 对于每个二元组(a, b), 表示a的钱应该比b多.每个人最少应该有100元, 求最后的总分配钱数./*有两种思路, 一种是正常建边, 最后从在从拓扑序列的前面开始更新wage第二种是反向建边, 在拓扑排序的时候就直接更新wage第一种的常数大点.主要的点是: 对于A->B, B->C, A->C这种关系, A应该最后保留...原创 2018-07-28 10:40:02 · 208 阅读 · 0 评论 -
关于Floyd的一些疑问
Floyd是一个很简单的算法, 运用了动态规划的思想.它是这么描述求最短路的过程的: 设Di,j,kDi,j,kD_{i, j, k} 是i到j的只以(1⋯k)(1⋯k)(1\cdots k)集合中的节点==为中间节点==的最短路径的长度.若最短路径经过点k, 则Di,j,k=Di,k,k−1+Dk,j,k−1Di,j,k=Di,k,k−1+Dk,j,k−1D_{i, j, k} = D...原创 2018-08-12 09:42:58 · 259 阅读 · 0 评论