hdu 1102
来源:互联网 发布:淘宝收到差评会怎样 编辑:程序博客网 时间:2024/05/04 11:40
#include<iostream>#include<algorithm>using namespace std;struct node { int i,j; int s;};bool cmp(node a,node b){ return a.s<b.s;}node a[1000000];int pa[1000000];int find(int t){ while(pa[t]!=t) { t=pa[t]; } return t;}int main(){ int n; while(cin>>n) { int i,j; int k=0; for(i=1;i<=n;i++) pa[i]=i; for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { int t; cin>>t; if(i>j) { a[k].i=i; a[k].j=j; a[k].s=t; k++; } } } sort(a,a+k,cmp); int m; cin>>m; int mm=0; for(i=1;i<=m;i++) { int t1,t2; cin>>t1>>t2; t1=find(t1); t2=find(t2); if(t1>t2) { pa[t1]=t2; mm++; } else if(t1<t2) { pa[t2]=t1; mm++; } } int sum=0; for(i=0;i<k;i++) //这里是k不是n wa了~~好几次~~ { int t1,t2; t1=find(a[i].i); t2=find(a[i].j); if(t1>t2) { pa[t1]=t2; sum=sum+a[i].s; mm++; } else if(t1<t2) { pa[t2]=t1; sum=sum+a[i].s; mm++; } if(mm==n-1) break; } cout<<sum<<endl; } return 0;}