• POJ1287 Networking


    解题思路:Kruskal模板题,重复输入的情况,本题是无向图。

    见代码:

     1 #include<cstdio>
     2 #include<algorithm>
     3 #include<cstring>
     4 using namespace std;
     5 #define inf 0x3f3f3f3f
     6 const int maxn = 100005;
     7 int n, m, father[55],w[55][55];
     8 
     9 int Find(int x)
    10 {
    11     return father[x] == x ? x : father[x] = Find(father[x]);
    12 }
    13 
    14 struct node{
    15     int x, y, w;
    16 }p[maxn];
    17 
    18 int cmp(node A, node B)
    19 {
    20     return A.w < B.w;
    21 }
    22 
    23 int main()
    24 {
    25     int a, b, x;
    26     while(~scanf("%d", &n) && n)
    27     {
    28         scanf("%d", &m);
    29         for(int i = 1; i <= n; i++)
    30         {
    31             for(int j = i; j <= n; j++)
    32             {
    33                 if(i == j) w[i][j] = 0;
    34                 else w[i][j] = w[j][i] = inf;
    35             }
    36         }
    37         for(int i = 0; i < m; i++)
    38         {
    39             scanf("%d%d%d", &a, &b, &x);
    40             p[i].x = a, p[i].y = b, p[i].w = x;
    41             //如果两点有多条路,这步取更小的值
    42             if(w[a][b] > x) w[a][b] = w[b][a] = x;
    43         }
    44         sort(p, p + m, cmp); //从小到大
    45         //并查集初始化
    46         for(int i = 1; i <= n; i++) father[i] = i;
    47         int sum = 0;
    48         for(int i = 0; i < m; i++)
    49         {
    50             int rootx = Find(p[i].x);
    51             int rooty = Find(p[i].y);
    52             //不在同一个集合就加起来
    53             if(rootx != rooty)
    54             {
    55                 sum += p[i].w;
    56                 father[rootx] = rooty;
    57             }
    58         }
    59         printf("%d
    ", sum);
    60 
    61     }
    62     return 0;
    63 }
    View Code
  • 相关阅读:
    kmp模板
    2017 ACM/ICPC Asia Regional Shenyang Online transaction transaction transaction
    2017 ACM/ICPC Asia Regional Shenyang Online 12 card card card
    KMP
    最长不下降子序列
    codeforces round 433 D. Jury Meeting
    codeforces round 433 C. Planning 贪心
    hdu 5792 线段树+离散化+思维
    hdu 5792 树状数组+离散化+思维
    hdu 5791 思维dp
  • 原文地址:https://www.cnblogs.com/loveprincess/p/4910840.html
Copyright © 2020-2023  润新知