先考虑边的代价,容易发现每一条边都需要走两次,也就是2*边权再考虑点的代价,由于上面的结论,那么就是度数*点权然后就可以构造新的边权为2*原边权+连接点的点权,然后求最小生成树即可注意根还有一个点权,所以再加上根(也就是最小点)的点权即可 1 #include<bits/stdc++.h> 2 using namespace std; 3 #define N 10005 4 struct ji{ 5 int x,y,z; 6 }e[N*10]; 7 int n,m,ans,a[N],f[N];…