题目分析: 不难注意到仙人掌边可以删掉.在森林中考虑树形DP. 题目中说边不能重复,但我们可以在结束后没覆盖的边覆盖一个重复边,不改变方案数. 接着将所有的边接到当前点,然后每两个方案可以任意拼接.然后考虑引一条边上去的情况,选一个点不与周围连边就行了. 判仙人掌利用dfs树与树前缀和即可. 代码: #include<bits/stdc++.h> using namespace std; ; ; int T,n,m,arr[maxn],C[maxn],d[maxn],up[maxn],dep[…