求助玄关
  • 板块灌水区
  • 楼主Danny_chan
  • 当前回复4
  • 已保存回复4
  • 发布时间2025/1/23 19:24
  • 上次更新2025/1/23 22:04:58
查看原帖
求助玄关
1032960
Danny_chan楼主2025/1/23 19:24

这题

代码:

#include<bits/stdc++.h>
using namespace std;
int n,m,sum=0,fa[200010],k=0,f1=0;
struct node{
	int x,y,z;
}a[5010];
bool cmp(node x,node y){
	return x.z<y.z;
}
int f(int x){
	if(fa[x]==x) return x;
	else return fa[x]=f(fa[x]);
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		fa[i]=i;
	}
	for(int i=1;i<=m;i++){
		cin>>a[i].x>>a[i].y>>a[i].z;
	}
	sort(a+1,a+m+1,cmp);
	for(int i=1;i<=m;i++){
		int f_x=f(a[i].x);
		int f_y=f(a[i].y);
		if(f_x!=f_y){
			fa[f_x]=f_y;
			sum+=a[i].z; 
			k++;
			if(k==n-1){
				f1=1;
				break;
			}
		}
	}
	if(f1==1) cout<<sum<<endl;
	else cout<<"orz"<<endl;
	return 0;
}
2025/1/23 19:24
加载中...