P1546 最短网络 Agri-Net

题目背景

农民约翰被选为他们镇的镇长!他其中一个竞选承诺就是在镇上建立起互联网,并连接到所有的农场。当然,他需要你的帮助。

题目描述

约翰已经给他的农场安排了一条高速的网络线路,他想把这条线路共享给其他农场。为了用最小的消费,他想铺设最短的光纤去连接所有的农场。

你将得到一份各农场之间连接费用的列表,你必须找出能连接所有农场并所用光纤最短的方案。每两个农场间的距离不会超过100000

输入输出格式

输入格式:

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

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

输出格式:

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

输入输出样例

输入样例#1:

4
0 4 9 21
4 0 8 17
9 8 0 16
21 17 16 0
输出样例#1:

28

说明

题目翻译来自NOCOW。

USACO Training Section 3.1

思路:Krukal算法;

 #include<iostream>
using namespace std;
#define N 10010
#include<algorithm>
struct point
{
int a,b,l;
}farm[N];
int n,k;
int top;
int sum;
int far[N];
bool cmp(point a,point b)
{
return a.l<b.l;
}
int find(int a)
{
if(far[a]!=a)far[a]=find(far[a]);
return far[a];
}
int main()
{
cin>>n;
for(int i=;i<=n;++i)
for(int j=;j<=n;++j)
{
int x;
cin>>x;
if(x!=)
{
top++;
farm[top].a=i;farm[top].b=j;farm[top].l=x;
}
}
for(int i=;i<=n;++i)far[i]=i;
sort(farm+,farm+top+,cmp);
for(int i=;i<=top;++i)
{
int aa=find(farm[i].a);
int bb=find(farm[i].b);
if(aa!=bb)
{
far[aa]=bb;
sum+=farm[i].l;
++k;
}
if(k==n-)break;
}
cout<<sum;
return ;
}

P1546 最短网络(codevs | 2627村村通)的更多相关文章

  1. Codevs 2627 村村通

    时间限制: 1 s   空间限制: 32000 KB  题目等级 : 黄金 Gold  题目描述 Description 农民约翰被选为他们镇的镇长!他其中一个竞选承诺就是在镇上建立起互联网,并连接到 ...

  2. P1546 最短网络 Agri-Net题解(克鲁斯卡尔)

    P1546 最短网络 Agri-Net 那么这个题是一道最小生成树的板子题 在此讲解kruskal克鲁斯卡尔方法: 原理: 并查集在这里被用到: 众所周知:树满足这样一个定理:如果 图 中有n个节点并 ...

  3. 洛谷 P1546 最短网络 Agri-Net

    题目链接 https://www.luogu.org/problemnew/show/P1546 题目背景 农民约翰被选为他们镇的镇长!他其中一个竞选承诺就是在镇上建立起互联网,并连接到所有的农场.当 ...

  4. 洛谷P1546 最短网络 Agri-Net

    P1546 最短网络 Agri-Net 526通过 959提交 题目提供者JOHNKRAM 标签图论贪心USACO 难度普及/提高- 提交该题 讨论 题解 记录 最新讨论 50分C++代码,求解 请指 ...

  5. 洛谷——P1546 最短网络 Agri-Net

    P1546 最短网络 Agri-Net 题目背景 农民约翰被选为他们镇的镇长!他其中一个竞选承诺就是在镇上建立起互联网,并连接到所有的农场.当然,他需要你的帮助. 题目描述 约翰已经给他的农场安排了一 ...

  6. 填坑...P1546 最短网络 Agri-Net

    P1546 最短网络 Agri-Net 难度普及/提高- 时空限制1s / 128MB 题目背景 农民约翰被选为他们镇的镇长!他其中一个竞选承诺就是在镇上建立起互联网,并连接到所有的农场.当然,他需要 ...

  7. 洛谷P1546 最短网络 Agri-Net(最小生成树,Kruskal)

    洛谷P1546 最短网络 Agri-Net 最小生成树模板题. 直接使用 Kruskal 求解. 复杂度为 \(O(E\log E)\) . #include<stdio.h> #incl ...

  8. P1546 最短网络 Agri-Net

    题目背景 农民约翰被选为他们镇的镇长!他其中一个竞选承诺就是在镇上建立起互联网,并连接到所有的农场.当然,他需要你的帮助. 题目描述 约翰已经给他的农场安排了一条高速的网络线路,他想把这条线路共享给其 ...

  9. 洛谷 P1546 最短网络 Agri-Net Label:Water最小生成树

    题目背景 农民约翰被选为他们镇的镇长!他其中一个竞选承诺就是在镇上建立起互联网,并连接到所有的农场.当然,他需要你的帮助. 题目描述 约翰已经给他的农场安排了一条高速的网络线路,他想把这条线路共享给其 ...

随机推荐

  1. @property 装饰器

    property() 函数作用于新式类,返回属性值. class C(object): def __init__(self): self._x = None def getx(self): print ...

  2. Java集合源码 -- Collection框架概述

    1.概述 collection框架是用于处理各种数据结构的,要根据各种数据结构的特点理解它 它能够保存对象,并提供很多的操作去管理对象,当你面临下面的情况时,也许你应该考虑用集合类 1.容器的长度是不 ...

  3. 如何彻底修改eclipse中的名称

    一.右键工程:Refactor->Rename,或选中工程按F2,修改名称二.修改项目目录下:.project文件 <?xml version="1.0" encodi ...

  4. ethereumjs/merkle-patricia-tree-1-简介

    https://github.com/ethereumjs/merkle-patricia-tree SYNOPSIS概要 This is an implementation of the modif ...

  5. 图文助你打开MS SQL Serever的ldf和mdf文件

    第一步:在C盘下找到”program files”双击打开 第二步:打开Microsoft SQL Server 第三步:选择MSSQL.1打开DATA文件 第四步:将你的ldf文件和mdf文件复制到 ...

  6. Redis入门(一)---安装

    一.Ubuntu安装 1.命令行安装 sudo apt-get install redis-server 2.启动redis服务(安装完成后自动启动) sudo /etc/init.d/redis-s ...

  7. php编译安装报错

    Cannot find OpenSSL's <evp.h> 解决方法: 下载openssl-1.1.0h.tar  包 [root@localhost ~]# cd openssl-1.1 ...

  8. CC2640R2F&TI-RTOS 拿到 TI CC2640R2F 开发板 第四件事就是 修改第三件事信号量超时改为 事件 超时,并增加 事件控制 ,用于控制LED 闪烁时间或者关闭

    /* * data_process.c * * Created on: 2018年7月5日 * Author: admin */ #include "board_led.h" #i ...

  9. jquery checkbox点选反选

    <script type="text/javascript"> $(function(){ //点选反选 $("#check_all").click ...

  10. emmet完整收录(html,css)

    emmet官网 https://emmet.io/ 语法篇 Child: > nav>ul>li <nav> <ul> <li></li&g ...