最小树形图
Anxdada
多读书多看报, 少吃零食多睡觉
展开
-
最小树形图的理解与证明
判断是否存在树形图的方法很简单,只需要以v为根作一次图的遍历就可以了,所以下面的算法中不再考虑树形图不存在的情况。 在所有操作开始之前,我们需要把图中所有的自环全都清除。很明显,自环是不可能在任何一个树形图上的。只有进行了这步操作,总算法复杂度才真正能保证是O(VE)。 首先为除根之外的每个点选定一条入边,这条入边一定要是所有入边中最小的。现在所有的最小入边都选择出来了,如果这个入边集不存在有向原创 2017-06-20 23:45:17 · 329 阅读 · 0 评论 -
HDU -- 2121 【无定根的最小树形图】
传送门题意: 有n个点,有m条单向路,问这n个点组成最小树形图的最小花费 思路: 1:构造虚根最小树形图 因为是不定根,所以我们可以假设一个虚拟根,分别与n个点都有一条权值为r的虚边,假如我们把r设的非常大的话,我们求出来的值就可以判一下选了几条虚边, 如果有两条以上, 则这个图原来是不连通的.2:不含虚拟点的最小树形图的根节点 因为在缩点的时候我们需要给每一个点进行从原创 2017-07-13 15:50:21 · 456 阅读 · 0 评论 -
UVA--- 11183 【有定根的有向图的最小生成树-裸最小树形图】
传送还有这道 POJ 3164 点这传送举个例子:某个图的部分图中, 1->2权值为3, 2->1权值为4, 3->1权值为9, 4->2权值为7。 那么可以看到,结点1和结点2是形成了一个环的。我们仅从其大小不知道删除哪条边比较好,这时看到3->1权值为9, 如果走这条边,那么接下来只能删除掉2->1这条边,同理走4->2的话就要删除掉1->2这条边。 那么就不妨建立新图, 将1和2缩成一点原创 2017-06-20 23:18:52 · 489 阅读 · 0 评论 -
HDU -- 4009 Transfer water 【无定根的最小树形图 + 思维】
传送门 //题意: 山上有一些村民, 每家可以自己挖井取水, 有一个花费(和高度有关), 也可以选择从比他们高的村民家中引水, 建造管道也有一个花费, 那么问最少的花费是多少. //思路 : 因为每一个村民家建造水井所需要的花费都是很不确定的, 所以我们最小树形图, 用一个虚根, 而虚边的权值就是每一户打井所需要的花费, 这样以后跑一遍最小树形图就可以出答案. AC Code/** @Cain原创 2017-08-11 16:48:00 · 377 阅读 · 0 评论 -
最小树形图模板
//有定根模板 板子: /** @Cain*/ int a[maxn][maxn]; int in[maxn],pre[maxn],vis[maxn],id[maxn]; int dirTree(int root,int n,int m) { //root为根的编号, n个点, m条边. int res = 0; while(1){ for(int i=原创 2017-07-14 22:54:29 · 365 阅读 · 0 评论