小镇网(最小生成树)

Description

农民约翰被选为他们镇的镇长!他其中一个竞选承诺就是在镇上建立起互联网,并连接到所有的农场。当然,他需要你的帮助。约翰已经给他的农场安排了一条高速的网络线路,他想把这条线路共享给其他农场。为了使花费最少,他想铺设最短的光纤去连接所有的农场。你将得到一份各农场之间连接费用的列表,你必须找出能连接所有农场并所用光纤最短的方案。每两个农场间的距离不会超过100000

Input

第一行: 农场的个数,N(3<=N<=100)。

第二行..结尾: 后来的行包含了一个N*N的矩阵,表示每个农场之间的距离。理论上,他们是N行,每行由N个用空格分隔的数组成,实际上,他们限制在80个字符,因此,某些行会紧接着另一些行。当然,对角线将会是0,因为不会有线路从第i个农场到它本身。

Output

只有一个输出,其中包含连接到每个农场的光纤的最小长度。

Sample Input

4

0 4 9 21

4 0 8 17

9 8 0 16

21 17 16 0

Sample Output

28

解题思路:

最小生成树,用的不是很熟练,在半参照模板的情况下才写出来,还有待提升!

AC代码:

#include <stdio.h>
#include <string.h>
#define MAX_NUM 105
int map[MAX_NUM][MAX_NUM], n;
int prime()
{
    int pos, min, result = 0, visited[MAX_NUM], low[MAX_NUM];
    memset(visited, 0, sizeof(visited));
    visited[1] = 1;
    pos = 1;
    for(int i = 1; i <= n; i++)
        if(i != pos)
            low[i] = map[pos][i];
    for(int i = 1; i < n; i++)
    {
        min = 100000000;
        for(int j = 1; j <= n; j++)
        {
            if(visited[j] == 0 && low[j] < min)
            {
                min = low[j];
                pos = j;
            }
        }
        result += min;
        visited[pos] = 1;
        for(int j = 1; j <= n; j ++)
        {
            if(visited[j] == 0 && low[j] > map[pos][j])
                low[j] = map[pos][j];
        }
    }
    return result;
}
int main()
{
    scanf("%d", &n);
    for(int i = 1; i <= n; i++)
        for(int j = 1; j <=n; j++)
        {
            scanf("%d", &map[i][j]);
            if(map[i][j] == 0)
                map[i][j] = 1000000;
        }
    printf("%d\n", prime());
    return 0;
}

小镇网(最小生成树),布布扣,bubuko.com

时间: 2024-12-21 07:16:20

小镇网(最小生成树)的相关文章

淘宝村、网红小镇……扎堆的互联网产业有那么美好吗

国人最大的爱好之一,似乎就是喜欢跟风.扎堆.不仅仅是现实生活中扎堆看热闹,更体现在社会的方方面面.尤其是一个又一个的"风口",更是让企业和创业者趋之若鹜.从团购.电商,到智能手机.O2O,再到手游.共享经济.直播--层出不穷的"扎堆"迅速改变着社会架构和大众的生活方式. 而在近日,中国第一座网红小镇"DAMARAVILLAGE颜值·艺术小镇"正式对外亮相.这意味着,直播行业不仅仅是平台扎堆,更是完成了在线下的落地和扎堆.结合此前国内为数不少的淘宝

SSL 2731_村通网_最小生成树

题目描述 为了加快社会主义现代化,建设学校,小明决定给学校里每台电脑都连上互联网,方便未来随时随地玩耍. 他的电脑室很大,有N 台电脑,但地理位置偏僻,网络信号很差. 一台电脑有网,当且仅当满足以下至少一个条件: 1.给中国移动交宽带费,直接连网,花费为A. 2.向另外一台有网的电脑,安装共享网线,花费为B×两者曼哈顿距离. 现在,小明已经统计出了所有电脑的坐标.他想知道最少要多少费用才能达到目的. 思路 将全部点相连,边权为两点的两者曼哈顿距离*B 在用一个点i'和全部点相连全职为A 跑最小生

最小生成树——城市公交网建设问题

城市公交网建设问题 [问题描述] 有一张城市地图,图中的顶点为城市,无向边代表两个城市间的连通关系,边上的权为在这两个城市之间修建高速公路的造价,研究后发现,这个地图有一个特点,即任一对城市都是连通的.现在的问题是,要修建若干高速公路把所有城市联系起来,问如何设计可使得工程的总造价最少? [输入格式] n(城市数,1<=n<=100) e(边数) 以下e行,每行3个数i,j,wij,表示在城市i,j之间修建高速公路的造价. [输出格式] n-1行,每行为两个城市的序号,表明这两个城市间建一条高

牛客网NowCoder 2018年全国多校算法寒假训练营练习比赛(第四场)A.石油采集(dfs) B.道路建设(最小生成树prim) C.求交集(暴力) F.Call to your teacher(迪杰斯特拉乱用) H.老子的全排列呢(dfs)

菜哭了... A.石油采集 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K 64bit IO Format: %lld 链接:https://www.nowcoder.com/acm/contest/76/A来源:牛客网 题目描述 随着海上运输石油泄漏的问题,一个新的有利可图的行业正在诞生,那就是撇油行业.如今,在墨西哥湾漂浮的大量石油,吸引了许多商人的目光.这些商人们有一种特殊的飞机,可以一瓢略过整个海面20米乘10米这么大的长方形.(上下相

poj1251 最小生成树

Description The Head Elder of the tropical island of Lagrishan has a problem. A burst of foreign aid money was spent on extra roads between villages some years ago. But the jungle overtakes roads relentlessly, so the large road network is too expensi

NYOJ 434 &amp;&amp; POJ 1251 Jungle Roads(最小生成树)

链接:click here 题意: 题目大意在相通n个岛屿的所有桥都坏了,要重修,重修每一个桥所用的时间不同,求重修使每个岛屿都间接或直接与其他岛屿相同时所用的的最短时间(只有修完一个桥后才可修下一个桥).简言之就是求最小生成树. 对于数据,数据输入的第一行n代表岛屿的个数,当为0是结束程序,接着n-1行开始时为这岛屿的编号,用大写字母表示,接着是一个整数m,表示与该岛屿连接的字典序大于该岛屿编号的个数,然后该行输入m对数据,每对数据的第一个字母表示与该岛屿连通的岛屿的编号,第二个数字表示要重修

最小生成树(prim算法,Kruskal算法)c++实现

1.生成树的概念 连通图G的一个子图如果是一棵包含G的所有顶点的树,则该子图称为G的生成树. 生成树是连通图的极小连通子图.所谓极小是指:若在树中任意增加一条边,则将出现一个回路:若去掉一条边,将会使之变成非连通图. 生成树各边的权值总和称为生成树的权.权最小的生成树称为最小生成树. 2.最小生成树的性质用哲学的观点来说,每个事物都有自己特有的性质,那么图的最小生成树也是不例外的.按照生成树的定义,n 个顶点的连通网络的生成树有 n 个顶点.n-1 条边. 3.构造最小生成树,要解决以下两个问题

最小生成树之 prim算法和kruskal算法(以 hdu 1863为例)

最小生成树的性质 MST性质:设G = (V,E)是连通带权图,U是V的真子集.如果(u,v)∈E,且u∈U,v∈V-U,且在所有这样的边中, (u,v)的权c[u][v]最小,那么一定存在G的一棵最小生成树,(u,v)为其中一条边. 构造最小生成树,要解决以下两个问题: (1).尽可能选取权值小的边,但不能构成回路(也就是环). (2).选取n-1条恰当的边以连接网的n个顶点. Prim算法的思想: 设G = (V,E)是连通带权图,V = {1,2,-,n}.先任选一点(一般选第一个点),首

最小生成树-并查集-Kruskal-zoj-2048-special judge

Highways description The island nation of Flatopia is perfectly flat. Unfortunately, Flatopia has a very poor system of public highways. The Flatopian government is aware of this problem and has already constructed a number of highways connecting som