zoukankan      html  css  js  c++  java
  • $P2121 拆地毯$

    (problem)

    (kruskal)的模板题。

    #ifdef Dubug
    
    #endif
    #include <bits/stdc++.h>
    using namespace std;
    typedef long long LL ;
    inline LL In() { LL res(0),f(1); register char c ;
    	while(isspace(c=getchar())) ; c == '-'? f = -1 , c = getchar() : 0 ;
    	while(res = (res << 1) + (res << 3) + (c & 15) , isdigit(c=getchar())) ;
    	return res * f ;
    }
    int n , m , k ;
    const int N = 100000 + 5 ;
    int fa[N] ;
    struct node{
    	int u ;
    	int v ;
    	int w ;
    };
    node edge[N] ;
    LL ans(0) ;
    bool cmp(node x,node y) {
    	return x.w > y.w ;
    }
    inline int find(int x) {
    	return fa[x] == x ? fa[x] : fa[x] = find(fa[x]) ;
    }
    inline void merge(int x,int y) {
    	fa[find(x)] = find(y) ;
    }
    inline void kruskal() {
    	sort(edge+1,edge+m+1,cmp) ;
    	int cnt (0) ;
    	for(register int i=1;i<=m;i++) {
    		if(find(edge[i].u) == find(edge[i].v)) continue ;
    		merge(edge[i].u,edge[i].v) ;
    		ans += edge[i].w ;
    		if(++cnt == k) return ;
    	}
    }
    signed main() {
    	n = In() , m = In() , k = In() ;
    	for(register int i=1;i<=n;i++) fa[i] = i ;
    	for(register int i=1;i<=m;i++) {
    		int u , v , w ;
    		u = In() , v = In() , w = In() ;
    		edge[i] = node{u,v,w} ;
    	}
    	kruskal() ;
    	cout << ans << endl ;
    	return 0 ;
    }
    
  • 相关阅读:
    2. Django每日一码 之as_view() 源码
    gdb
    Mex文件在VS2010中调试方法
    intel ipp6.0安装过程
    C++开源库大全
    Win7下搭建Go语言开发环境
    for_each使用方法详解
    使用VS2012编译和使用C++ STL(STLport)
    django css
    google mock C++单元测试框架
  • 原文地址:https://www.cnblogs.com/qf-breeze/p/10627506.html
Copyright © 2011-2022 走看看