T了求调QWQ
  • 板块P1340 兽径管理
  • 楼主2pow10
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/10/14 13:09
  • 上次更新2023/11/2 13:56:40
查看原帖
T了求调QWQ
394197
2pow10楼主2023/10/14 13:09
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N = 1001000;
struct egde{
	int x,y,w;
}e[N];
int n,m,zhi;
int fu[N];
int cmp(egde a,egde b){
	return a.w<b.w;
}
int root(int a){
	return fu[a]==a?a:fu[a]=root(fu[a]);
}
void merge(int a,int b){
	fu[root(a)] = root(b);
}
signed main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin >> n >> m;
	for(int i=1;i<=m;i++){
		cin >> e[i].x >> e[i].y >> e[i].w;
		if(i<n) {
			cout << "-1\n";
			continue;
		}
		else {
		int ans = 0 , cnt = 1 , zhi = 0;
		sort(e+1,e+1+i,cmp);
		for(int j=1;j<=n;j++) fu[j] = j;
		for(int j=1;j<=i;j++){
			if(root(e[j].x)!=root(e[j].y)){
				merge(e[j].x,e[j].y);
				ans += e[j].w;
				cnt++;
			}
			if(cnt==n) {
				cout << ans << endl; 
				zhi = 1;
				break;
			}
		}
		if(!zhi)
		cout << "-1" << endl;	
		}
	}
	return 0;
}
2023/10/14 13:09
加载中...