最短路径生成树
作者:互联网
前言
为班刊而写
首先,这个东西是一个非常冷门的知识点,模板题好像就是一道紫题(省选),但害怕考上了,于是,找了少有的博客,整理一下
定义
我们知道最小生成树是一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边。最小生成树可以用kruskal(克鲁斯卡尔)算法或prim(普里姆)算法求出,俗话讲,就是求一个图,削成树后,树上留下边权和最小
那么,最短路径生成树是什么?
最短路径生成树,就是ROOT根节点到达任意点距离最短的路径所构成的树,就是最短路径生成树
也就是说,最短路径树是一个根据根节点形成的每一个点到根节点距离最小的树
知道了定义,那么,最短路径树有何应用?----导航
求法
实际上,看到定义就知道,可以用,\(dijkstra\)来求最短路(这个不会的下面的也看不懂),至于路径,就是在计算时记录路,然后,在最后记下路径就行了
实际上最短路径生成树最难的是记数,统计一共多少棵树
这个实际上也是基于\(dijkstra\),在每次松弛时,对于如果相等时,就可以用一个数组记录从原点到当前点最短的路径的方案,最后,可以用乘法原理,统计出最后的答案
看到这,实际上,最短路径树是一个统计最短路径的形式,甚至不是一个算法,所以,题目一般都是变形过后的题目
例题
[HAOI2012]道路
题目描述
C 国有 n 座城市,城市之间通过 m 条单向道路连接。一条路径被称为最短路,当且仅当不存在从它的起点到终点的另外一条路径总长度比它小。两条最短路不同,当且仅当它们包含的道路序列不同。我们需要对每条道路的重要性进行评估,评估方式为计算有多少条不同的最短路经过该道路。现在,这个任务交给了你。
题目分析
首先对于这道题,可以对每一个点为根建一棵最小路径树,然后,树上的边实际上就是一个最短路径的一条边,于是,就可以对此贡献,然后最后,用乘法原理统计答案即可
标签:短路,路径,最小,生成,最短,树是 来源: https://www.cnblogs.com/kid-magic/p/15034150.html