比赛 20190521热身赛 评测结果 AAAAAAAAAA
题目名称 挖水井 最终得分 100
用户昵称 g36c 运行时间 0.665 s
代码语言 C++ 内存使用 90.31 MiB
提交时间 2019-05-21 19:17:31
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int n,m,a[306],aa[306][306],fa[306],tql;
struct papapa {
    int from,to,dist;
} e[6666666];
priority_queue<papapa>qaq;
bool operator < (papapa a,papapa b) {
    return a.dist > b.dist;
}
int getfather(int x) {
    if(fa[x]==x)
        return x;
    else return getfather(fa[x]);
}
void hebing(int a,int b) {
    int x=getfather(a);
    int y=getfather(b);
    fa[x]=y;
}
int wzc() {
    int ans=0;
    while(!qaq.empty()) {
        papapa s=qaq.top();
        int aa=getfather(s.from);
        int bb=getfather(s.to);
        if(aa!=bb) {
            fa[aa]=bb;
            ans+=s.dist;
        }
        qaq.pop();
    }
    return ans;

}
int main() {
	freopen("water.in","r",stdin);
	freopen("water.out","w",stdout);
    ios::sync_with_stdio(0);
    cin>>n;
    for(int i=1; i<=n; i++) {
        cin>>a[i];
    }
    for(int i=1; i<=n; i++)
        for(int j=1; j<=n; j++) {
            cin>>aa[i][j];
            qaq.push((papapa) {
                i,j,aa[i][j]
            });
        }
    n++;
    for(int i=1; i<=n; i++) {
        qaq.push((papapa) {
            i,n,a[i]
        });
        qaq.push((papapa) {
            n,i,a[i]
        });
    }
    for(int i=1; i<=n; i++)
        fa[i]=i;
int tql=wzc();
    cout<<tql;
        return 0;
}