题目
思路
关于二项堆的性质和实现,可以参考二项堆的定义和实现。对题目给出的算法的分析后,我们可以得到以下几点:
1、1~4行初始化,我们可以用一个数组充当Vi,采用并查集的方式,方便查找子树根等,程序后最终得到前驱子图;相对应的,创建每一个二项堆存储Ei,其中key为权值,值为edge(包含边起点和终点);
2、5~12行迭代。每一次迭代最多减少一个顶点集,对于顶点集Vi,
a.采用二项堆的extractMin操作可获得最小权值边;
b.采用并查集查找两者的根;
c.第12行,采用Bhe