摘要: FLoyd算法的扩展 Floyd算法是一种求任意点到任意点的最短距离。可以求边权为负值,有向图、无向图等的最短路径。但是边权可以有负权值的边,但不能有包含负权值边组成的回路,不然算出来的就不是正确答案!!这个算法效率很低可以说是暴力。但是这种暴力是带着动态规划的暴力!!但是却不能有边权和为负值的回路 阅读全文
posted @ 2018-08-30 13:22 安昙つきし 阅读(305) 评论(0) 推荐(0) 编辑
摘要: Kosaraju两次深搜实现强连通分量 kosaraju算法进行两次dfs,第一次在原图上进行,并在结点递归调用返回时将结点压入一个栈中,第二次dfs在原图的逆图上进行,并且初始点选择栈中最上面的点,每次dfs所访问的点构成一个强连通分量。 第一次看kosaraju算法的时候,我很不解,为什么第二次 阅读全文
posted @ 2018-08-30 13:21 安昙つきし 阅读(160) 评论(0) 推荐(0) 编辑
摘要: tarjan——割边与割点 用Dfn数组记录搜索到该点的时间。 Low数组是一个标记数组,记录该点所在的强连通子图所在搜索子树的根节点的Dfn值。 以上是有向图的low、dfn定义,实际上无向图与其类似。 无向图中,dfn[i]表示DFS过程中到达点i的时间,low[i]表示能通过其他边回到其祖先的 阅读全文
posted @ 2018-08-29 21:14 安昙つきし 阅读(200) 评论(0) 推荐(1) 编辑
摘要: 最短路SPFA算法 描述:给定M条边,N个点的带权无向图。求1到N的最短路。 input:第一行:N,M(N<=100000,M<=500000);接下来M行3个正整数; ai,bi,ci表示ai,bi之间有一条长度为ci的路,ci<=1000。 output:一个整数,表示1到N的最短距离。 sa 阅读全文
posted @ 2018-08-29 19:52 安昙つきし 阅读(234) 评论(0) 推荐(0) 编辑
摘要: 只有五行的算法,Floyd 【最短路径】信使 Description 战争时期,前线有n个哨所,每个哨所可能会与其他若干个哨所之间有通信联系。信使负责在哨所之间传递信息,当然,这是要花费一定时间的(以天为单位)。指挥部设在第一个哨所。当指挥部下达一个命令后,指挥部就派出若干个信使向与指挥部相连的哨所 阅读全文
posted @ 2018-08-29 19:49 安昙つきし 阅读(209) 评论(0) 推荐(1) 编辑
摘要: 贪心思想——Kruskal 求最小生成数还有另一种算法,Kruskal Kruskal算法运用了贪心的思想,首先是对得到的边集数组进行排序,权值小的边排在前面,这是为之后的贪心做准备工作 Kruskal算法的核心思想是:根据权值从小到大遍历每一条边,把原图分为两个集合,每一次判断这一条边的两个端点是 阅读全文
posted @ 2018-08-29 19:46 安昙つきし 阅读(292) 评论(0) 推荐(0) 编辑
摘要: Prim——最小生成树 Description 给你一个具有n个点,m条边的无向连通图,求其最小生成树的权值和。 Input 第一行两个整数n(1<=n<=300)和m,分别表示图的顶点数和边数。 接下来m行是每行三个整数u, v, c,表示结点u和v之间有边相连,权值为c(1≤c≤10000)。 阅读全文
posted @ 2018-08-29 19:36 安昙つきし 阅读(140) 评论(0) 推荐(0) 编辑