• Luogu P1550 [USACO08OCT]打井Watering Hole


    0号结点:农夫John山泉天然矿泉水(

    by Luogu第一篇题解

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    
    int n,cnt,tot,ans,fa[100005];
    
    struct edge{
    	int u,v,w;
    }e[100005];
    
    inline void add(int u,int v,int w){
    	e[++cnt].v=v;
    	e[cnt].u=u;
    	e[cnt].w=w;
    }
    
    inline int getfa(int v){
    	if(fa[v]==v)return v;
    	fa[v]=getfa(fa[v]);
    	return fa[v];
    }
    
    inline bool cmp(edge x,edge y){
    	return x.w<y.w;
    }
    
    int main(){
    	scanf("%d",&n);
    	for(int i=1;i<=n;i++){
    		fa[i]=i;
    		int x;scanf("%d",&x);
    		add(0,i,x);
    	}
    	for(int i=1;i<=n;i++){
    		for(int j=1;j<=n;j++){
    			int x;scanf("%d",&x);
    			add(i,j,x);
    		}
    	}
    	sort(e+1,e+cnt+1,cmp);
    	for(int i=1;i<=cnt;i++){
    		int fx=getfa(e[i].u),fy=getfa(e[i].v);
    		if(fx!=fy){
    			fa[fx]=fy;
    			tot++;
    			ans+=e[i].w;
    		}
    		if(tot==n){
    			printf("%d
    ",ans);
    			return 0;
    		}
    	}
    }
    
  • 相关阅读:
    frame、center和bounds
    UILabel
    UIColor
    Url_Filter(Code)
    listView介绍
    C# 常用正则
    C++指针的概念
    指针所具有的四个要素:
    windows_sendEmail
    工作笔记
  • 原文地址:https://www.cnblogs.com/Y15BeTa/p/11324972.html
Copyright © 2020-2023  润新知