看数据范围想到状压,我们知道最后是选出一颗生成树,但边权的计算有一些有趣: 我们先选一个点做根:然后就发现边的权和深度有关:那我们按深度dp;即按层dp; dp[i][s]表示前i层选的点集为s,转移时我们枚举s的补集的子集ss:对于ss中的每个点, 我们连上他到s中点的最小边:但这样连的边没办法保证深度为i+1,但我们就强制把他设成i+1: 这样感觉很错,但其实是对的,因为这样只会使答案变大,而且还可以保证真正的答案被枚举到: 相当于是一种对限制的扩大. #include<iostream>…