标签:usaco return scan ++i ++ iostream add main code
我们只需要一个额外的点代表水库
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int head[400];
int n;
int w[400];
int x,y,z;
struct b{
int f;
int to;
int ne;
int v;
}ed[200050];
int p;
int fa[400];
int find(int x){
//cout<<x<<endl;
return fa[x]==x ? x:fa[x]=find(fa[x]) ;
}
void add(int f,int to,int v){
p++;
ed[p].f=f;
ed[p].ne=head[f];
ed[p].to=to;
ed[p].v=v;
head[f]=p;
}
bool cmp(b x,b y){
return x.v<y.v;
}
void kr(){
int ans=0;
int cnt=0;;
int li=n-1;
for(int i=1;i<=p;++i){
// cout<<i<<endl;
if(find(ed[i].f)!=find(ed[i].to)){
// cout<<"sussed";
fa[fa[ed[i].f]]=fa[ed[i].to];
cnt++;
ans+=ed[i].v;
if(cnt==li)
break;
}
}
cout<<ans<<endl;
return ;
}
int main(){
scanf("%d",&n);
n++;
for(int i=1;i<n;++i){
scanf("%d",&x);
add(i,n,x);
}
for(int i=1;i<=n;++i)
fa[i]=i;
for(int i=1;i<n;++i){
for(int j=1;j<n;++j){
scanf("%d",&x);
if(j>i){
add(i,j,x);
}
}
}
sort(ed+1,ed+p+1,cmp);
// cout<<324234;
kr();
return 0;
}
P1550 [USACO08OCT]Watering Hole G
标签:usaco return scan ++i ++ iostream add main code
原文地址:https://www.cnblogs.com/For-Miku/p/13772054.html