zoukankan      html  css  js  c++  java
  • CCF-CSP题解 201812-4 数据中心

    题目要求最长边最小的生成树。好吧,这就是一道kruskal MST题。

    #include <bits/stdc++.h>
    const int maxn = 50000;
    const int maxm = 100000;
    
    using namespace std;
    
    struct tEdge
    {
        int u, v;
        int t;
        bool operator < (const tEdge &y) const
        {
            return t < y.t;
        }
    };
    tEdge edge[maxm+10];
    int cnt = 1;
    
    int fa[maxn+10];
    
    int getFa(int x)
    {
        if (x == fa[x])
            return x;
        return fa[x] = getFa(fa[x]);
    }
    
    int main()
    {
        int n, m, root;
        scanf("%d%d%d", &n, &m, &root);
    
        for (int i = 1, u, v, t; i <= m; i++)
        {
            scanf("%d%d%d", &u, &v, &t);
            edge[cnt].u = u;
            edge[cnt].v = v;
            edge[cnt++].t = t;
        }
    
        sort(edge + 1, edge + 1 + m);
    
        for (int i = 1; i <= n; i++)
            fa[i] = i;
    
        int ans = -1;
        for (int i = 1, temp = 0; temp != n - 1; i++)
        {
            int rx = getFa(edge[i].u), ry = getFa(edge[i].v);
            if (rx != ry)
            {
                fa[rx] = ry;
                temp ++;
                ans = edge[i].t;
            }
        }
    
        printf("%d
    ", ans);
    
        return 0;
    }
    
    
  • 相关阅读:
    用户交互语句
    基础数据类型补充与总结
    Python 中表示 False 的方法
    集合
    字典
    元组
    列表
    整型数据详述和进制转换
    f-strings 详解
    字符串方法详解
  • 原文地址:https://www.cnblogs.com/acboyty/p/11363134.html
Copyright © 2011-2022 走看看