1 条题解

  • 1
    @ 2023-12-5 13:29:33

    最小生成树模板题。

    #include<bits/stdc++.h>
    using namespace std;
    const int N=1e4+5;
    struct node{
    	int x,y,c;
    }a[N];
    bool cmp(node n1,node n2){
    	return n1.c<n2.c;
    }
    int fa[N];
    int get(int x){
    	if(fa[x]==x)return x;
    	return fa[x]=get(fa[x]);
    }
    int main(){
    	int n,m;scanf("%d%d",&n,&m);
    	for(int i=1;i<=m;i++){
    		scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].c);
    	}
    	sort(a+1,a+m+1,cmp);
    	for(int i=1;i<=n;i++)fa[i]=i;
    	int cnt=0,mx=0;
    	for(int i=1;i<=m;i++){
    		int x=a[i].x,y=a[i].y;
    		int tx=get(x),ty=get(y);
    		if(tx!=ty){
    			fa[tx]=ty;
    			cnt++;
    			mx=max(mx,a[i].c);
    			if(cnt==n-1)break;
    		}
    	}
    	if(cnt<n-1)printf("0 0");
    	else printf("%d %d",cnt,mx);
    	return 0;
    }
    
    • 1

    信息

    ID
    1083
    时间
    1000ms
    内存
    256MiB
    难度
    7
    标签
    (无)
    递交数
    13
    已通过
    12
    上传者