贪心算法头哥

#include<bits/stdc++.h>

using namespace std;

#define maxint 9999

int main()

{

    int n,m;

    int a[100][100];

    int c[100][100];

    cin >>  n  >> m;

     for(int i = 1;i <= n;i ++)

     {

         for(int j = 1;j <= n;j ++)

         {

            c[i][j] = maxint;

         }

     }//在定义C的时候使C[I][J] = maxint 会出错

   for(int i = 1;i <= m;i ++)

   {

       for(int j = 1;j <= 3;j++)

       {

           cin >> a[i][j];

       }

       int w,q;

       w = a[i][1];

       q = a[i][2];

       c[w][q] = a[i][3];

       c[q][w] = c[w][q];

   }

   for(int i = 1;i <= n;i ++)

   {

       for(int j = 1;j <= n;j++)

       {

           cout << c[i][j] << ' ';

       }

      cout << endl;

   }

   

    int lowcost[n] ;

    int closest[n] ;

     bool s[maxint];

     s[1] = true;

    for(int i = 2;i <= n;i ++)

    {

        lowcost[i] = c[1][i];

        closest[i] = 1;

        s[i] = false;

    }

    for(int i = 1;i < n;i ++)

    {

        int min = 100000;

        int j = 1;

        for(int k =2;k <= n;k ++)

        {

            if((lowcost[k]<min)&&(!s[k]))

            {

                min = lowcost[k];

                j = k;

            }

            s[j] = true;

            for(int k = 2;k <= n;k ++)

            {

                if((c[j][k]<lowcost[k])&&(s[k]==false))

                {

                    lowcost[k] = c[j][k];

                    closest[k] = j;

                }

            }

        }

    }

    int sum = 0;

    for(int i = 2;i <= n;i ++)

    {    

        cout << lowcost[i] << ' ';

          sum = lowcost[i]+sum;

    }

   cout << sum;

    return 0;

}

//使用函数二维数组c**会出错,和书上不同的是C 数组

  • 6
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值