思路:
利用克鲁斯卡尔算法,最小生成树把边从小到大排序,然后Union;
最大生成树就是把边从大到小排序,然后Union;
#includeusing namespace std;typedef __int64 LL;const int N=15000;struct asd{ int u,v; int w;};asd q[N];int pre[N],n,num;bool cmp(asd x,asd y){ return x.w =0;i--) { int aa=Find(q[i].u); int bb=Find(q[i].v); if(aa!=bb) { pre[aa]=bb; ans+=q[i].w; } } return ans;}int min_tree(){ int ans=0; init(); for(int i=0;i