第三个点WA了求助
查看原帖
第三个点WA了求助
79543
一大楼主2020/11/4 16:44
#include<bits/stdc++.h>
using namespace std;
int n,m;
struct s{
	int f,to,w;
}a[2000001];
int ans;
int cnt=0;
int fa[10001];
int find(int x){
	if(fa[x]==x) return x;
	else return fa[x]=find(fa[x]);
}
void unionn(int x,int y){
	fa[find(x)]=find(y);
    fa[find(y)]=find(x);
}
void uni(int f,int t,int w){
	a[++cnt].f =f;
	a[cnt].to =t;
	a[cnt].w =w;
}
void read(){
	cin>>n>>m;
	for(int i=1;i<=m;i++){
		int f,t,w;
		cin>>f>>t>>w;
		uni(f,t,w);
		uni(t,f,w);
	}
}
bool cmp(s a,s b){
	return a.w <b.w ;
}
void kusal(){
	int s=0;
	for(int i=1;i<=n;i++) fa[i]=i;
	sort(a+1,a+cnt+1,cmp);
	unionn(a[1].f ,a[1].to );
	ans+=a[1].w ;
	s++;
	for(int i=2;i<=m;i++){
		if(find(a[i].f )!=find(a[i].to )){
			unionn(a[i].f ,a[i].to );
			ans+=a[i].w ;
			s++;
		}
		if(s==n-1) return;
	}
	
	
	
}
int main(){
	read();
	kusal();
	cout<<ans;
}
2020/11/4 16:44
加载中...