zoukankan      html  css  js  c++  java
  • POJ1258最小生成树简单题

    题意:
          给你个图,让你求一颗最小生成树。
    思路:
         裸题,克鲁斯卡尔或者普利姆都行。


    #include<stdio.h>
    #include<algorithm>


    using namespace std;


    typedef struct
    {
        int a ,b ,c;
    }NODE;


    NODE node[100*100+10];
    int mer[105];


    bool camp(NODE a ,NODE b)
    {
        return a.c < b.c;
    }


    int finds(int x)
    {
        return x == mer[x] ? x : mer[x] = finds(mer[x]);
    }


    int main ()
    {
        int n ,i ,j ,ans;
        while(~scanf("%d" ,&n))
        {
            int nowid = 0;
            for(i = 1 ;i <= n ;i ++)
            {
                for(j = 1 ;j <= n ;j ++)
                {
                    nowid++;
                    scanf("%d" ,&node[nowid].c);
                    node[nowid].a = i ,node[nowid].b = j;
                }
                mer[i] = i;
            }
            sort(node + 1 ,node + nowid + 1 ,camp);
            ans = 0;
            for(i = 1 ;i <= nowid ;i ++)
            {
                int x = finds(node[i].a);
                int y = finds(node[i].b);
                if(x == y) continue;
                ans += node[i].c;
                mer[x] = y;
            }
            printf("%d " ,ans);
        }
        return 0;


    }

  • 相关阅读:
    问题 G: 艰难取舍(dp)
    算式
    问题 G: 背菜谱
    问题 B: 寻路
    问题 D: 数字变换(dfs)
    问题 D: 2的幂数
    问题 C: 幸运数字II(4,7)
    问题 D: 莱布尼茨三角形
    问题 E: 有理数树
    2020年秋高级软件工程”领跑衫“获奖感言
  • 原文地址:https://www.cnblogs.com/csnd/p/12062516.html
Copyright © 2011-2022 走看看