题解 | #还是畅通工程#

还是畅通工程

https://www.nowcoder.com/practice/d6bd75dbb36e410995f8673a6a2e2229

#include <bits/stdc++.h>
using namespace std;
const int N = 5010;
struct node {
	int a, b, w;
} no[N];
int n, m;
int p[N];

int find(int x) {
	if (p[x] != x) p[x] = find(p[x]);
	return p[x];
}

bool cmp(node x, node y) {
	return x.w < y.w;
}

int main() {
	while (cin >> n) {
		if (n == 0) return 0;
		m = n * (n - 1) / 2;
		for (int i = 1; i <= 100; i++) p[i] = i;
		for (int i = 1; i <= m; i++) cin >> no[i].a >> no[i].b >> no[i].w;
		sort(no + 1, no + 1 + m, cmp);
		int res = 0;
		for (int i = 1; i <= m; i++) {
			int a = find(no[i].a), b = find(no[i].b);
			if (a != b) {
				p[a] = b;
				res += no[i].w;
			}
		}
		cout << res << endl;
		memset(no, 0, sizeof no);
		res = 0;
	}
	return 0;
}

全部评论

相关推荐

06-26 18:30
门头沟学院 Java
据说名字越长别人越关...:你问问这里面有多少是正经候选人,而不是乱打招呼的
点赞 评论 收藏
分享
头顶尖尖的程序员:我也是面了三四次才放平心态的。准备好自我介绍,不一定要背熟,可以记事本写下来读。全程控制语速,所有问题都先思考几秒,不要急着答,不要打断面试官说话。
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务