USACO 3.1 Agri-Net 最短网络 (最小生成树)(克鲁斯卡尔算法)
题意
农民约翰被选为他们镇的镇长!他其中一个竞选承诺就是在镇上建立起互联网,并连接到所有的农场。当然,他需要你的帮助。约翰已经给他的农场安排了一条高速的网络线路,他想把这条线路共享给其他农场。为了用最小的消费,他想铺设最短的光纤去连接所有的农场。你将得到一份各农场之间连接费用的列表,你必须找出能连接所有农场并所用光纤最短的方案。每两个农场间的距离不会超过100000
分析
假设连通网G=(V,E),则令最小生成树的初始状态为只有n个顶点而无边的非连通网,图中每个顶点自成一个连通分量。在E中选择代价最小的边,若该边依附的顶点落在T中不同的连通分量上,则将此边加入到T中,否则舍去此边而选择下一条代价最小的边。依此类推,直至T中所有顶点都在同一连通分量上为止。
var
n,i,j,tj,q,p,min,k,t:longint;
a:array[0..200,0..200]of longint;
f:array[0..200]of longint;
begin
readln(n);
for i:=1 to n do
for j:=1 to n do
read(a[i,j]);
tj:=0;
for i:=1 to n do
f[i]:=i;
for k:=1 to n-1 do
begin
min:=maxlongint;
for i:=1 to n do
for j:=1 to n do
if (f[i]<>f[j])and(a[i,j]<min)and(a[i,j]<>0) then
begin
min:=a[i,j];
p:=j;
q:=i;
end;
tj:=tj+min;
t:=f[p];
for i:=1 to n do
if f[i]=t then f[i]:=f[q];
end;
write(tj);
end.
转载于:https://www.cnblogs.com/YYC-0304/p/9500151.html
USACO 3.1 Agri-Net 最短网络 (最小生成树)(克鲁斯卡尔算法)相关推荐
- 最小生成树克鲁斯卡尔算法
文章目录 一.什么是克鲁斯卡尔? 二.原理 三.代码实现 一.什么是克鲁斯卡尔? 克鲁斯卡尔算法是求连通网的最小生成树的另一种方法.与普里姆算法不同,它的时间复杂度为O(eloge)(e为网中的边数) ...
- 数据结构图之二(最小生成树--克鲁斯卡尔算法)
[1]克鲁斯卡尔算法 普里姆算法是以某顶点为起点,逐步找各顶点上最小权值的边来构建最小生成树. 克鲁斯卡尔算法是直接以边为目标去构建. 因为权值是在边上,直接去找最小权值的边来构建生成树也是很自然的想 ...
- 最小生成树------克鲁斯卡尔算法(数据结构)
树(Tree):如果一个无向连通图中不存在回路,则这种图称为树. 生成树 (Spanning Tree):无向连通图G的一个子图如果是一颗包含G的所有顶点的树,则该子图称为G的生成树. 生成树是连通图 ...
- 贪心算法(Greedy Algorithm)最小生成树 克鲁斯卡尔算法(Kruskal#39;s algorithm)
克鲁斯卡尔算法(Kruskal's algorithm)它既是古典最低的一个简单的了解生成树算法. 这充分反映了这一点贪心算法的精髓.该方法可以通常的图被表示.图选择这里借用Wikipedia在.非常 ...
- 最小生成树(克鲁斯卡尔算法)
关于克鲁斯卡尔算法他是针对边的.而普里姆算法是针对顶点的. 下面还是用普里姆算法的图. 如下: 因此可以构造边集数组. 如下图所示: 代码如下: int Find(int *parent, int f ...
- 最小生成树——克鲁斯卡尔算法
最小生成树的概念就不说了,本文主要是克鲁斯卡尔算法实现,而且用到了并查集思想.相较于prim算法,克鲁斯卡尔更容易理解:在不形成环的情况下,选取最小的权值边,直到点的个数减一.对于环的判断就使用并 ...
- 最小生成树算法普利姆算法和克鲁斯卡尔算法实现
最小生成树算法: 普里姆算法:顶点集合N,辅助顶点集合S,初始化中,将出发点vi加入S,并从N中删除 1.从顶点集合N中找到一条到集合S最近的边(vi,vj),存储该边,并将vj从N移到S中 2.重复 ...
- java克鲁斯卡尔算法,最小生成树( 克鲁斯卡尔算法)
最小生成树( 克鲁斯卡尔算法) /* Name: Copyright: Author: Date: 01-12-14 20:17 Description: 最小生成树( 克鲁斯卡尔算法) 关于并查集的 ...
- 利用克鲁斯卡尔算法求最小生成树
思路:最小生成树即为无向连通图G的一个子图如果是一颗包含G的所有顶点且权最小的树则称为最小生成树.克鲁斯卡尔算法的基本思想是以边为主导地位,始终选择当前可用的(所选的边不能构成回路)最小权值边.所以第 ...
最新文章
- SSL For Free 申请免费https SSL 凭证
- Asp.net控件开发学习笔记(三)-控件开发基础
- ccs安装多版本编译器离线_windows 安装mysql多版本 主从复制
- SQL Server - 高可用与灾难恢复(HADR)技术 -- AlwaysOn可用性组(理论篇)
- sox处理mp3_音频处理常用Linux命令总结(一)
- 初探下一代SIEM核心技术发展趋势
- 浅入深出Vue:注册
- 时隔5年 三星要重回苹果闪存零部件供应商名单了
- 矩阵特征值的一些特点
- 文件备份软件 FreeFileSync
- C语言贪吃蛇大作业总结,C语言实现贪吃蛇游戏
- Mac中设置右键新建TXT文件
- 奥克兰大学计算机科学专业学费,奥克兰大学各专业学费
- 通过路由器映射 配置 远程访问
- SSL Virtual Private Network的技术分析
- 《Head First 设计模式》例子的C++实现(4 单件模式)
- python中datetime是什么意思_Python中time和datetime的区别
- 万向区块链行业研究:区块链技术在绿色金融领域的应用分析
- 箱型图/盒图 jupyter Notebook
- 【iOS】—— ARC学习