为什么没有输出了?????
查看原帖
为什么没有输出了?????
568775
Joseph_H楼主2021/12/30 15:41
#include<bits/stdc++.h>
using namespace std;
const int NUM = 5e3 + 1;
int s[NUM];
struct node{
	int u,v,w;
};
node f[200001];
int find(int u){
	return s[u] == 0 ? u : find(s[u]);
}
inline int read(){
	int now = 0,nev = 1;
	char c = getchar();
	while(c < '0' || c > '9'){
		if(c == '-') nev = -1;
		c = getchar();
	}
	while(c >= '0' && c <= '9'){
		now = (now << 1) + (now << 3) + (c & 15);
		c = getchar();
	}
	return now * nev;
}
int n,m;
bool cmp(node a,node b){
	return a.w < b.w;
}
int kruskal(){
	int ans = 0;
	for(int i = 1;i <= n;i++){
		s[i] = i;
	}
	stable_sort(f + 1,f + m + 1,cmp);
	for(int i = 1;i <= m;i++){
		int b = find(f[i].u);
		int c = find(f[i].v);
		if(b == c) continue;
		s[c] = b;
		ans += f[i].w;
	}
	if(ans == 0){
		printf("orz");
	}
	printf("%d",ans);
}
int main(){
	n = read();
	m = read();
	for(int i = 1;i <= n * n;i++){
		f[i].w = 100000;
	}
	for(int i = 1;i <= m;i++){
		f[i].u = read();
		f[i].v = read();
		f[i].w = read();
	}
	kruskal();
}
2021/12/30 15:41
加载中...