zoukankan      html  css  js  c++  java
  • P1550 [USACO08OCT]Watering Hole G

    Miku

    我们只需要一个额外的点代表水库

    #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;
    }
    
  • 相关阅读:
    gflag使用
    INTERVIEW #2
    Decision Tree
    Java FAQ
    K-Nearest Neighbors
    INTERVIEW #1
    C++ FAQ
    INTERVIEW #0
    Selection Sort
    TCP 3-Way Handshake
  • 原文地址:https://www.cnblogs.com/For-Miku/p/13772054.html
Copyright © 2011-2022 走看看