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;}

原创粉丝点击