题面:
题意:
给定一张n个点的完全图,边权只有0/1两种。
给定完全图中边权为1的边,求一棵最小生成树。
题解:
由于边权为1的边的数量较少,我们可以考虑怎么利用边权为1的边。
因为我们要求最小生成树,那么肯定是要优先选取边权为0的边。
我们把所有能用边权为0的边的连通块搜出来,假设最终有 c n t cnt cnt 个连通块,这些连通块内部均可以用边权为0的边联通,那么最终最小生成树的权值为 c n t − 1 cnt-1 cnt−1。
代码:
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<string>
#include<queue>
#include<bitset>
#include<map>
#include<unordered_map>
#include