摘要:
2014.07.04 23:03简介: 给定一个无向带权连通图(三个条件),选出n-1条边将这n个顶点连成一棵树,使得这棵树的权值之和最小。描述: 本次使用Kruskal算法来解决这个问题。 如果有n个顶点的话,我们需要n-1条边来拼成一棵树。 Kruskal算法的基本思路,是每次拼上一条边... 阅读全文
摘要:
2014.07.04 22:42简介: 给定一个无向带权连通图(三个条件),选出n-1条边将这n个顶点连成一棵树,使得这棵树的权值之和最小。描述: 本次使用Prim算法来解决这个问题。Prim算法的思想是两点:BFS与贪婪。 我们从一个顶点出发,把这个顶点对应的边加入到优先队列中。既然是优先队... 阅读全文
摘要:
2014.07.04 20:43简介: 给定一个有向图,如果每一条边u->v代表一根水管,定义能从u流向v的最大水流量。那么选定起点s和终点t,如果让水从s流入,从t流出,最多能达到多少流量而不挤爆水管?图示: Capacity是容量的意思,那么我们用C(u, v)来表示u->v这条边,也就是u... 阅读全文
摘要:
2014.07.04 19:34简介: 给定一个带权图(有向无向皆可),找出每个顶点到其他所有顶点的最短距离。描述: 此处介绍O(n^3)级别的Floyd算法,只需要用三层循环的简单代码就完成所有最短距离的计算。唯一需要注意的,就是三层循环里i、j、k的摆放顺序。 代码非常简单,所以无需多作解... 阅读全文
摘要:
2014.07.04 18:32简介: 给定一个有向图,边的权值可能各不相同(不包含负权值)。给定一个起点s,找出起点到所有顶点的最短路径距离。描述: 这就是Dijkstra算法的用武之处了。 实际上,如果从无权值的情况出发,来思考带权最短路径问题的解法,那么应该只需要修改几行之前BFS的代码... 阅读全文
摘要:
2014.07.04 18:24简介: 给定一个有向图,你可以认为每条边长度都是1(所以叫无权值)。下面的算法可以求出从特定的起点到终点的最短路径长度。描述: 从起点出发,根据当前顶点出发的边进行广度优先搜索,直至找到终点即可。如果搜索结束了仍然没有找到终点,那么起点无法到达终点。实现: 1 /... 阅读全文
摘要:
2014.07.04 17:23简介: 我们考虑一种特殊的图: 1.有向图 2. 只有一个连通分量 3. 不存在环 那么这样的图里,必然可以找到一种排序方式,来确定谁在谁的“前面”。 简单的来说可以这么理解:如果存在一条边a->b,那么a顶点就在b的前面。 下面我们通过例子... 阅读全文