zoukankan      html  css  js  c++  java
  • Luogu P2330 繁忙的都市

    Luogu P2330 繁忙的都市

    裸的最小生成树。
    当然,一定要注意它让你输出什么。

    #include<bits/stdc++.h>
    #define N 100010
    
    using namespace std;
    
    int n,m,cnt,s,mmax;
    int fa[N];
    
    struct node {
    	int frm,to,w;
    }e[N];
    
    void addEdge(int u,int v,int w) {
    	e[++cnt]=(node){u,v,w};
    	return;
    }
    
    void Read() {
    	scanf("%d%d",&n,&m);
    	for(int i=1;i<=m;i++) {
    		int u,v,w;
    		scanf("%d%d%d",&u,&v,&w);
    		addEdge(u,v,w);
    	}
    	return;
    }
    
    bool cmp(node a,node b) {
    	return a.w<b.w;
    }
    
    void Init() {
    	for(int i=1;i<=n;i++) {
    		fa[i]=i;
    	}
    	return;
    }
    
    int Find(int x) {
    	return fa[x]==x?x:fa[x]=Find(fa[x]);
    }
    
    bool Judge(int x,int y) {
    	if(Find(x)==Find(y)) {
    		return false;
    	}
    	else {
    		return true;
    	}
    }
    
    void Merge(int x,int y) {
    	fa[Find(y)]=fa[Find(x)];
    	return;
    }
    
    void Kruskal() {
    	sort(e+1,e+cnt+1,cmp);
    	for(int i=1;i<=cnt;i++) {
    		if(Judge(e[i].frm,e[i].to)) {
    			s++;
    			mmax=max(mmax,e[i].w);
    			Merge(e[i].frm,e[i].to);
    		}
    		if(s==n-1) {
    			break;
    		}
    	}
    	printf("%d %d",s,mmax);
    	return;
    }
    
    int main()
    {
    	Read();
    	Init();
    	Kruskal();
    	return 0;
    }
    
  • 相关阅读:
    装饰器的加载顺序
    生成器
    迭代器
    有参装饰器与装饰器补充
    无参装饰器
    闭包函数
    函数对象与函数嵌套
    名称空间与作用域
    函数参数补充
    函数参数的使用
  • 原文地址:https://www.cnblogs.com/luoshui-tianyi/p/11521748.html
Copyright © 2011-2022 走看看