zoukankan      html  css  js  c++  java
  • 洛谷 1195 口袋的天空

    传送门

    并查集水题。

    //Twenty
    #include<algorithm>
    #include<iostream>
    #include<cstdlib>
    #include<cstring>
    #include<cstdio>
    #include<cmath>
    #include<ctime>
    #include<queue>
    const int maxn=1e5+5;
    using namespace std;
    typedef long long LL;
    int ans,n,m,k,u,v,w,cnt,fa[maxn];
    
    void read(int &ret) {
        int f=1; ret=0; char ch=getchar();
        while(ch!='-'&&(ch<'0'||ch>'9')) ch=getchar();
        if(ch=='-') f=-1,ch=getchar();
        for(;ch>='0'&&ch<='9';ch=getchar()) ret=ret*10+ch-'0'; ret*=f;
    }
    
    struct edge{
    	int u,v,w;
    	edge(){}
    	edge(int u,int v,int w):u(u),v(v),w(w){}
    	friend bool operator <(const edge&A,const edge&B) {
    	    return A.w<B.w;
    	}
    }e[maxn];
    
    int find(int x) {
        return x==fa[x]?x:fa[x]=find(fa[x]);
    }
    
    void init() {
    	read(n); read(m); read(k);
    	for(int i=1;i<=m;i++) {
    	    read(u); read(v); read(w);
    	    e[++cnt]=edge(u,v,w);
    	}
    	sort(e+1,e+cnt+1);
    	for(int i=1;i<=n;i++) fa[i]=i;
    	for(int i=1;i<=cnt;i++) {
    	    u=e[i].u; v=e[i].v; w=e[i].w;
    	    int x=find(u),y=find(v);
    	    if(x!=y) {
    		    ans+=w;
    		    fa[x]=y;
    		    n--;
    		    if(n==k) break;
    		} 
    	}
    	printf("%d
    ",ans);
    }
    
    int main()
    {
    	init();
    	return 0;
    }
    

      

  • 相关阅读:
    0 RabbitMQ概念
    java 排序
    spring整合redis(基于redisTemplate)
    http之content-type
    http协议讲解
    Java8 lambda 以及 Lambda在集合中的使用
    java中decimalFormat格式化数值
    找出占用的端口进程ID,并且杀死该进程
    CSS
    标签
  • 原文地址:https://www.cnblogs.com/Achenchen/p/7726071.html
Copyright © 2011-2022 走看看