P1546 最短网络 Agri-Net

那么这个题是一道最小生成树的板子题

在此讲解kruskal克鲁斯卡尔方法;

原理:

并查集在这里被用到;

众所周知:树满足这样一个定理:如果 图 中有n个节点并且相联通,那么找出n-1条连接所有节点的边并且使连接成的图中没有环(走一圈又回到原先节点的路径),那么这个图一定是一棵树。

那么,我们写代码时只要满足以上条件并且使得找到的n-1条边总和最小,那么这棵树就是最小生成树啦!QWQ。

那么,我们将每个点都看成一个集合,每个集合的初始值为这个点的编号,保证每个集合的值都不相同,从邻接矩阵(原谅本超级蒟蒻不会链式前向星)中用二重循环找出权值最小的边,将这条边连接的两个点所在的集合搞成一个集合(并查集操作),将集合的统一数值设为第一个点(始点)的集合的值,即将这两个集合加入生成树中,再用判断这两个点的集合的值是不是相同(是不是一个环)来决定是否加入树就行了。。

(放松一下手指。)

最后在双重循环中加入最外层循环int k=1;k<=n-1;k++来找n-1条边,就 AC

安利两个英语单词:矩阵matrix,联通connected

上代码:

#include<cstdio>//matrix为矩阵
#include<iostream>
#include<algorithm>
using namespace std;
int n,matrix[][],connect[],i0,j0,sum=,t;//matrix为输入的数字矩阵,connect为每个点所属的连通图,sum为最小边权值之和
int main(){
scanf("%d",&n);
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
scanf("%d",&matrix[i][j]);//以上4行为输入操作
for(int i=;i<=n;i++)
connect[i]=i;//连通图初始化
for(int k=;k<n;k++)//n-1条边
{
int minn=;//倒也可以是2147483647
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
if(matrix[i][j]&&connect[i]!=connect[j]&&matrix[i][j]<minn)
{
minn=matrix[i][j];
i0=i;j0=j;//存下这个边的始点和终点
}
sum+=minn;//加入权值之和
t=connect[j0];
for(int i=;i<=n;i++)
if(connect[i]==t)connect[i]=connect[i0];//找到集合中的元素(因为不止有一个所以for),将第二个集合合并到第一个中成为一个大的
}
printf("%d",sum);//输出最小权值之和(题目中为最小费用)
return ;
}

我这个不是标准的并查集查找方式,标准的请详见我的博客https://www.cnblogs.com/lbssxz/p/10753073.html

完。。结。。QAQ

P1546 最短网络 Agri-Net题解(克鲁斯卡尔)的更多相关文章

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

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

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

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

  3. P1546 最短网络(codevs | 2627村村通)

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

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

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

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

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

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

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

  7. 【luogu题解】P1546 最短网络 Agri-Net

    题目 约翰已经给他的农场安排了一条高速的网络线路,他想把这条线路共享给其他农场.为了用最小的消费,他想铺设最短的光纤去连接所有的农场. 你将得到一份各农场之间连接费用的列表,你必须找出能连接所有农场并 ...

  8. P1546 最短网络 Agri-Net

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

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

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

随机推荐

  1. iBinary C++STL模板库关联容器之map/multimap

    目录 一丶关联容器map/multimap 容器 二丶代码例子 1.map的三种插入数据的方法 3.map集合的遍历 4.验证map集合数据是否插入成功 5.map数据的查找 6.Map集合删除元素以 ...

  2. PE知识复习之PE的重定位表

    PE知识复习之PE的重定位表 一丶何为重定位 重定位的意思就是修正偏移的意思.  如一个地址位 0x401234 ,Imagebase = 0x400000 . 那么RVA就是 1234.  如果Im ...

  3. 基于 Nginx 的 HTTPS 性能优化实践

    前言 分享一个卓见云的较多客户遇到HTTPS优化案例. 随着相关浏览器对HTTP协议的“不安全”.红色页面警告等严格措施的出台,以及向 iOS 应用的 ATS 要求和微信.支付宝小程序强制 HTTPS ...

  4. -1-7 java 网络编程基本知识点 计算机网络 TCP/IP协议栈 通信必备 tcp udp

    计算机网络 是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来, 在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统. 网络编程 ...

  5. [UOJ310] 黎明前的巧克力

    Sol 某比赛搬了这题. 首先选择两个不交非空子集且异或和为0的方案数,等价于选择一个异或和为0的集合,并把它分成两部分的方案数. 这显然可以DP来算,设 \(f[i][j]\) 表示前\(i\)个数 ...

  6. .net 上传文件 Failed to load resource: net::ERR_CONNECTION_RESET Bug 解决

    环境: .net 4.0 ashx一般处理程序 使用 html5 FormData ajax上传文件 功能如下:如果用户有登录,则对文件进行处理:如果用户没登录,则直接返回json,提示用户未登录 遇 ...

  7. Java开发笔记(十六)非此即彼的条件分支

    前面花了大量篇幅介绍布尔类型及相应的关系运算和逻辑运算,那可不仅仅是为了求真值或假值,更是为了通过布尔值控制流程的走向.在现实生活中,常常需要在岔路口抉择走去何方,往南还是往北,向东还是向西?在Jav ...

  8. Callback方法和JQuery链的解释

    这里讲到了一条语句运行多个JQuery方法(同一个元素)和动画100%完成后执行的callback方法. <!DOCTYPE html> <html> <head> ...

  9. 简易仿ios菊花加载loading图

    原文链接:https://mp.weixin.qq.com/s/wBbQgOfr59wntNK9ZJ5iRw 项目中经常会用到加载数据的loading显示图,除了设计根据app自身设计的动画loadi ...

  10. MongoDB 最大连接数 设置失效的异常分析

    背景介绍: 查询MongoDB配置参数,可以知道关于最大连接数的参数是maxConns.但是连接实例后,查看支持的最大连接数,还是默认的819. 说明:最大连接数是由maxConn (maxIncom ...