【BZOJ】【P3714】【PA2014】【Kuglarz】【题解】【最小生成树】

来源:互联网 发布:ubuntu优麒麟安装 编辑:程序博客网 时间:2024/05/17 15:02

传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3714

前缀和奇偶性

Code:

#include<bits/stdc++.h>using namespace std;const int maxn=2e3+10;struct edge{    int u,v,w;    bool operator<(const edge &E)const{        return w<E.w;    }}edges[maxn*maxn];int fa[maxn];int find(int x){    if(fa[x]!=x)return fa[x]=find(fa[x]);    return x;}int n,m;int main(){    scanf("%d",&n);    for(int i=1;i<=n;i++)fa[i]=i;    for(int i=1;i<=n;i++){        for(int j=i;j<=n;j++){            int x;            scanf("%d",&x);            edges[++m]=(edge){i-1,j,x};        }    }sort(edges+1,edges+1+m);    long long ans=0;    for(int i=1;i<=m;i++){        int u=edges[i].u,v=edges[i].v;        if(find(u)!=find(v)){            fa[find(u)]=find(v);            ans+=edges[i].w;        }     }cout<<ans<<endl;    return 0;}


0 0