社区讨论

RE求指点

P3366【模板】最小生成树参与者 2已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@mhji2xc4
此快照首次捕获于
2025/11/04 02:55
4 个月前
此快照最后确认于
2025/11/04 02:55
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
const int MAXN = 3e5+100;
struct tree{
	int u,v;
	int key;
}t[MAXN];
int fa[MAXN];

bool pd(tree a , tree b){
	if(a.key > b.key)	return false;
	return true;
}

int find(int k){
	if(fa[k] != fa[fa[k]] )	return fa[k] = find(fa[fa[k]]);
	return fa[k];
}

int main(){
	int n , m;cin>>m>>n;
	for(int i=1;i<=n;i++)	cin>>t[i].u>>t[i].v>>t[i].key;
	for(int i=1;i<=n;i++)	fa[i]=i;
	
	sort(t+1 , t+1+n , pd);
	
	long long ans=0 , v=1;
	for(int i=1;i<=n;i++){
		int a1=find(t[i].u) , a2=find(t[i].v );
		//cout<<a1<<" "<<a2;
		if( a1 != a2 ){
			fa[a1] = a2;
			v++;
			ans+=t[i].key ;
		}
	}
	if(v<m)	cout<<"orz";
	else	cout<<ans;
	
	return 0;
}

回复

2 条回复,欢迎继续交流。

正在加载回复...