首页 > Web开发 > 详细

题解 洛谷P1546 [USACO3.1]最短网络 Agri-Net

时间:2020-04-08 17:31:41      阅读:68      评论:0      收藏:0      [点我收藏+]
题目描述
FJ 已经给他的农场安排了一条高速的网络线路,他想把这条线路共享给其他农场。为了用最小的消费,他想铺设最短的光纤去连接所有的农场。你将得到一份各农场之间连接费用的列表,你必须找出能连接所有农场并所用光纤最短的方案。每两个农场间的距离不会超过 10^5。

巨水的最小生成树模板题,直接敲一个 prim 算法就行了。

code:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
#include<cstdlib>
#include<algorithm>
#define inf 700000000
using namespace std;
int n,t[110],w[110][110],mst,bo[110],k;
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
      for(int j=1;j<=n;j++)
        cin>>w[i][j];
    memset(t,0x7f,sizeof(t));
    t[1]=0;
    for(int i=1;i<=n;i++)
    {
        k=0;
        for(int j=1;j<=n;j++)
          if(!bo[j]&&(t[j]<t[k]))
            k=j;
        bo[k]=1;
        for(int j=1;j<=n;j++)
          if(!bo[j]&&(w[k][j]<t[j]))
            t[j]=w[k][j];
    }
    for(int i=1;i<=n;i++)
      mst+=t[i];
    cout<<mst;
    return 0;
}

题解 洛谷P1546 [USACO3.1]最短网络 Agri-Net

原文:https://www.cnblogs.com/Akn-Wind/p/12660192.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!