p2700专题

P2700 逐个击破 最小生成树

题目描述 现在有N个城市,其中K个被敌方军团占领了,N个城市间有N-1条公路相连,破坏其中某条公路的代价是已知的,现在,告诉你K个敌方军团所在的城市,以及所有公路破坏的代价,请你算出花费最少的代价将这K个地方军团互相隔离开,以便第二步逐个击破敌人。 输入输出格式 输入格式:   第一行包含两个正整数n和k。 第二行包含k个整数,表示哪个城市别敌军占领。 接下来n-1行,每行包含三个正整数a

并查集【p2700】逐个击破

题目描述-->p2700 逐个击破 题意概括 花费最小的代价,使得一些有标记的节点不连通. 分析 我们需要花费最小代价使得原来连通的图中一些节点之间不相互连通. 贪心显然是可行的(一点也不显然 看到其他人写了dp,写了贪心. 但我感觉可以排序+并查集做啊. 排序 考虑我们要花费最小代价删边,但是并查集不支持删除操作. (貌似有一种东西叫分治线段树可以维护这种操作. 因此,我们根据容斥原理(这玩意