zoukankan      html  css  js  c++  java
  • 【模板】MST(Kruskal)

    代码如下

    #include <bits/stdc++.h>
    using namespace std;
    const int maxv=2e5+10;
    const int maxe=5e5+10;
    
    inline int read(){
        int x=0,f=1;char ch;
        do{ch=getchar();if(ch=='-')f=-1;}while(!isdigit(ch));
        do{x=x*10+ch-'0';ch=getchar();}while(isdigit(ch));
        return f*x;
    }
    
    struct node{int from,to,w;}e[maxe];
    int n,m,sum,f[maxv];
    long long ans;
    
    bool cmp(const node& x,const node& y){return x.w<y.w;}
    
    int find(int x){return x==f[x]?x:f[x]=find(f[x]);}
    
    void read_and_parse(){
    	n=read(),m=read();
    	for(int i=1;i<=n;i++)f[i]=i;
    	for(int i=1;i<=m;i++)scanf("%d%d%d",&e[i].from,&e[i].to,&e[i].w);
    }
    
    void solve(){
    	sort(e+1,e+m+1,cmp);
    	for(int i=1;i<=m;i++){
    		if(sum==n-1)break;
    		int x=find(e[i].from),y=find(e[i].to);
    		if(x^y)f[x]=y,ans+=e[i].w,++sum;
    	}
    	printf("%lld
    ",ans);	
    }
    
    int main(){
    	read_and_parse();
    	solve();
    	return 0;
    }
    
  • 相关阅读:
    eslint 规则
    我的.eslintrc.js
    shell命令
    .sync 修饰符的理解
    【HNOI 2018】寻宝游戏
    【BZOJ 2820】YY的GCD
    【Luogu P2664】树上游戏
    【HAOI 2012】高速公路
    句摘
    【SCOI 2008】奖励关
  • 原文地址:https://www.cnblogs.com/wzj-xhjbk/p/10022558.html
Copyright © 2011-2022 走看看