大佬求救调特判(最小生成树)
  • 板块灌水区
  • 楼主我是歌者
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/10/16 18:15
  • 上次更新2024/10/16 18:21:28
查看原帖
大佬求救调特判(最小生成树)
566190
我是歌者楼主2024/10/16 18:15

P3366

#include<bits/stdc++.h>
using namespace std;
int f[1000010],n,m;
long long int ans;
struct edge{
	int x,y,w;
}e[1000010];
int find(int a){
	if(f[a]==a) return a;
	else return f[a]=find(f[a]);
}
void add(int x,int y){
	x=find(f[x]);
    y=find(f[y]);
    
    f[x]=y;
    return;
}
bool cmp(edge a,edge b){
	return a.w<b.w;
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=m;i++){
		cin>>e[i].x>>e[i].y>>e[i].w;
	}
	for(int i=1;i<=n;i++) f[i]=i;
	int flag1=0;
	sort(e+1,e+m+1,cmp);
	for(int i=1;i<=m+1;i++){
		if(find(e[i].x)==find(e[i].y)) continue;
		else{
			add(e[i].x,e[i].y);
			ans+=e[i].w;
		}
	}
	
	cout<<ans;
	return 0;
}
2024/10/16 18:15
加载中...