44分求助
查看原帖
44分求助
657210
dp_hater楼主2023/7/4 16:14
#include<bits/stdc++.h>
using namespace std;
#define int long long
typedef unsigned long long sln;
int n,m; 
int fa[10005];
struct Edge{
	int u,v,w; 
}e[10005];
bool cmp(Edge x,Edge y){
	return x.w<y.w;
}
void init(){
	for(int i=1;i<=n;i++){
		fa[i]=i;
	}
}
int Find(int v){
	if(fa[v]==v) return v; 
	else{
		fa[v]=Find(fa[v]);
		return v;
	}
}
bool unite(int x,int y){
	int t1,t2;
	t1=Find(fa[x]);
	t2=Find(fa[y]);
	if(t1!=t2){
		fa[t2]=t1;
		return 1;
	}
	else return 0;
}
signed main(){
	cin>>n>>m;
	init();
   	for(int i=1;i<=m;i++)
     	cin>>e[i].u>>e[i].v>>e[i].w;
    sort(e+1,e+m+1,cmp);
    int ans=0,cnt=n;
    for(int i=1;i<=m;i++){
    	if(unite(e[i].u,e[i].v)){
    		ans+=e[i].w;
			cnt--;
			if(cnt==1) break; 
		}
	}
	if(cnt==1) cout<<ans;
	else cout<<"orz";
	cout<<endl;
	return 0;
}

5AC 3WA 5MLE

2023/7/4 16:14
加载中...