为什么只输出-1
查看原帖
为什么只输出-1
1385996
ZSYhaouuan楼主2024/10/5 09:22
#include<bits/stdc++.h>
#define ll long long
using namespace std;
struct node{
	int x,y,t;
}road[1000000+10];
ll n,m,fa[1000000+10],cnt=n,x=1,times=0;
int fin(int x){
	if(fa[x]==x) return x;
	else{
		fa[x]=fin(fa[x]);
		return fa[x];
	}
}
bool cmp(node a,node b){
	return a.t<b.t;
}
void add(int x,int y,int i){
	int t1=fin(x);
	int t2=fin(y);
	if(t1!=t2){
		fa[t1]=t2;
		cnt--;
		times+=road[i].t;
	}
	return;
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++)fa[i]=i;
	for(int i=1;i<=m;i++){
		cin>>road[i].x>>road[i].y>>road[i].t;
	}
	sort(road+1,road+m+1,cmp);
	
	for(int i=1;i<=m;i++){
		add(road[i].x,road[i].y,i);
		if(cnt==1){
			cout<<times;
			return 0;
		}
	}
	cout<<-1;
	return 0;
}

2024/10/5 09:22
加载中...