zoukankan      html  css  js  c++  java
  • MST-kruskal ElogE+V

    hdu 1233

    #include<stdio.h>
    #include<algorithm>
    using namespace std;
    struct dis
    {
            int a, b, c;
    } s[10010];
    int cmp(dis x, dis y)
    {
            return x.c < y.c;
    }
    int father[110];
    int fsize[110];
    int findfather(int y)
    {
            int r = y;
            while (r != father[r])
            {
                    r = father[r];
            }
            return r;
    }
    int combine(int a, int b)
    {
            int fx = findfather(a);
            int fy = findfather(b);
            if (fx != fy)
            {
                    if (fsize[fx] >= fsize[fy])
                    {
                            father[fy] = fx;
                            fsize[fx] += fsize[fy];
                            fsize[fy] = 0;
                    }
                    else
                    {
                            father[fx] = fy;
                            fsize[fy] += fsize[fx];
                            fsize[fx] = 0;
                    }
                    return 1;
            }
            else
            {
                    return 0;
            }
    }
    int main()
    {
            int t, i, n, sum, m;
            while (~scanf("%d", &t), t)
            {
                    n = t * (t - 1) / 2;
                    for (i = 1; i <= t; i++)
                    {
                            fsize[i] = 1;
                            father[i] = i;
                    }
                    for (i = 0; i < n; i++)
                    {
                            scanf("%d%d%d", &s[i].a, &s[i].b, &s[i].c);
                    }
                    sort(s, s + n, cmp);
                    m = 1, sum = 0;
                    for (i = 0; i < n && m < t; i++)
                    {
                            if (combine(s[i].a, s[i].b))
                            {
                                    m++;
                                    sum += s[i].c;
                            }
                    }
                    printf("%d
    ", sum);
            }
            return 0;
    }
    View Code
  • 相关阅读:
    Git的使用
    Flask(五)
    Flask(四)
    Flask(二)
    Flask(一)
    SDL 五子棋游戏
    c++单例模式
    ubuntu安装虚拟机
    git 命令
    汇编x86入门
  • 原文地址:https://www.cnblogs.com/Aragaki/p/7355655.html
Copyright © 2011-2022 走看看