最小树形图

最小树形图

概念:在一个给定边的有向图中,求以一个点为根的生成树,换句话说这个图中只有一个点入度为0,其余点入度均为1,且在此基础上进行约束,如要求边权和最小等

首先,在最小树形图中一般要以弧的形式存图,并保存一个点的前驱

主体就是朱刘算法,分4个步骤

1.求最短弧集合

2.判断集合中是否有环,具体就是自己成为自己的祖先,从当前结点一直染色,直到染到根或自己

3.若有环,缩点,重新求最短弧集合

4.统计结果输出

比较重要的就是缩点时的操作,据说可以用tarjan优化,日后学会了再补上

类似于并查集的思想,记录每个集合中的代表结点,并对所有弧进行一次修改

关键在于处理好改权值的问题,将每个点在环外入边的权值减去环内入边的权值,同时保留每次的统计和,只计算增量

​ ——2020.5.11


最重要的步骤也是最容易写错的步骤还是最后一步的减边权了,用更好理解的话说,如果一个点位于环内,一个点位于环外,那么就要将环外的点到环内的点的费用减掉环内最小的费用,也就相当于删除指向环内的点的边 而从环外点指向环内

不定根最小树形图

类似于大部分图论算法,利用虚拟源点来处理不定根问题

统计所有边权和,建立虚拟源点,并向原图中每个点连一条大于sum的边,避免对结果产生影响

原图中的根就是直接与虚拟源点相邻的点,可以在松弛时统计出来

例题:http://acm.hdu.edu.cn/showproblem.php?pid=2121

——2020.5.21

posted @ 2020-05-11 01:01  nebulyu  阅读(394)  评论(0编辑  收藏  举报