专题四 · 1004

来源:互联网 发布:怎样在淘宝网上开店铺 编辑:程序博客网 时间:2024/05/19 22:01

代码及解释

#include <iostream>#include <algorithm>// 刚刚考完计算机组成,赶快做一道题��// 连续好几道 Kruskal,代码几乎都不用改(感谢老师��)//using std::cin;using std::cout;using std::endl;const int N = 200;int set[N];int find_f(int x) {  if (x != set[x])    set[x] = find_f(set[x]);  return set[x];}struct edge {  int x, y, v;} e[N*(N - 1) / 2];inline int cmp(edge e1, edge e2) {  return e1.v<e2.v;}int main() {  int n;  while (cin >> n && n) {    for (int i = 0; i <= n; ++i)      set[i] = i;    n = n * (n - 1) / 2;    for (int i = 0; i<n; i++)      cin >> e[i].x >> e[i].y >> e[i].v;    std::sort(e, e + n, cmp);    int ans = 0;    for (int i = 0; i < n; ++i) {      int x = find_f(e[i].x);      int y = find_f(e[i].y);      if (x != y) {        ans += e[i].v;        set[x] = y;      }    }    cout << ans << endl;  }  return 0;}
0 0
原创粉丝点击