标签:
1 4 6 1 2 10 2 3 10 3 1 10 1 4 1 2 4 1 3 4 1 1 3 5 6
4
代码:
#include<stdio.h> #include<algorithm> using namespace std; struct record { int s,e,w; }num[200010]; bool cmp1(record a,record b) { return a.w<b.w; } int cmp2(int a,int b) { return a<b; } int per[510],co[510]; int n,m; int init() { for(int i=1;i<=n;i++) { per[i]=i; } } int find(int x) { int r; r=x; while(r!=per[r]) { r=per[r]; } per[x]=r; return r; } int join(int x,int y) { int fx=find(x); int fy=find(y); if(fx!=fy) { per[fx]=fy; return true; } return false; } int main() { int i,j,sum,t; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m); for(i=0;i<m;i++) { scanf("%d%d%d",&num[i].s,&num[i].e,&num[i].w); } sort(num,num+m,cmp1); for(j=0;j<n;j++) { scanf("%d",&co[j]); } sort(co,co+n,cmp2); init(); sum=0; for(i=0;i<m;i++) { if(join(num[i].s,num[i].e)) { sum+=num[i].w; } } printf("%d\n",sum+co[0]); } return 0; }
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:
原文地址:http://blog.csdn.net/longge33445/article/details/47659665