求助
  • 板块学术版
  • 楼主WD2c0mP
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/8/29 14:16
  • 上次更新2024/8/29 16:37:38
查看原帖
求助
780641
WD2c0mP楼主2024/8/29 14:16

P2330样例过了,为什么只有10pts):

#include<bits/stdc++.h>
using namespace std;
int n,m,tot,maxn;
int fa[1010];
struct edge{
	int u,v,w;
} e[100010];
bool cmp(edge a,edge b) {
	return a.w < b.w;
}
int find(int x) {
	while (x != fa[x]) x = fa[x] = fa[fa[x]];
	return x;
}
void kruscal() {
	sort(e + 1,e + m + 1,cmp);
	for (int i = 1;i <= m;i ++) {
		int eu = e[i].u,ev = e[i].v,val = e[i].w;
		if (find(eu) == find(ev)) continue;
		fa[ev] = eu;
		maxn = max(maxn,val);
		if (++tot == n - 1) return ;
	}
}
int main() {
	cin >> n >> m;
	for (int i = 1;i <= n;i ++) fa[i] = i;
	for (int i = 1;i <= m;i ++) cin >> e[i].u >> e[i].v >> e[i].w;
	kruscal();
	cout << n - 1 << " " << maxn << endl;
	return 0;
}
2024/8/29 14:16
加载中...