zoukankan      html  css  js  c++  java
  • POJ 1258 Agri-Net

    题意:给一个无向图的邻接矩阵,求最小生成树。

    解法:Kruskal算法。把边按边权排序,从小到大插入生成树中,如果一个边的两个点都在生成树中则不插入,用并查集维护。

    代码:

    #include<stdio.h>
    #include<iostream>
    #include<algorithm>
    #include<string>
    #include<string.h>
    #include<math.h>
    #include<limits.h>
    #include<time.h>
    #include<stdlib.h>
    #include<map>
    #include<queue>
    #include<set>
    #include<stack>
    #include<vector>
    #define LL long long
    using namespace std;
    struct node
    {
        int u, v;
        int num;
        bool operator < (const node & tmp) const
        {
            return num < tmp.num;
        }
    }edge[10005];
    int father[105];
    void init()
    {
        for(int i = 0; i < 105; i++)
            father[i] = i;
    }
    int Find(int x)
    {
        return father[x] == x ? father[x] : father[x] = Find(father[x]);
    }
    bool Union(int a, int b)
    {
        int c = Find(a), d = Find(b);
        if(c == d)
            return false;
        father[c] = d;
        return true;
    }
    int main()
    {
        int n;
        while(~scanf("%d", &n))
        {
            init();
            int cnt = 0;
            for(int i = 0; i < n; i++)
                for(int j = 0; j < n; j++)
                {
                    int x;
                    scanf("%d", &x);
                    if(j > i)
                    {
                        edge[cnt].u = i;
                        edge[cnt].v = j;
                        edge[cnt++].num = x;
                    }
                }
            sort(edge, edge + cnt);
            LL ans = 0;
            for(int i = 0; i < cnt; i++)
            {
                if(Union(edge[i].u, edge[i].v))
                    ans += edge[i].num; 
            }
            printf("%lld
    ", ans);
        }
        return 0;
    }
    

      

  • 相关阅读:
    情感成本
    已知二叉树前序和中序,求后序
    贫穷的本质
    Centos安装docker及常见docker容器创建脚本
    SpringBoot与SpringCloud对应版本及官方查询方法
    工作流
    Host 'xxx' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'
    list_layout.ini说明
    layout.ini说明
    config.ini说明
  • 原文地址:https://www.cnblogs.com/Apro/p/4481273.html
Copyright © 2011-2022 走看看