题意

农民约翰被选为他们镇的镇长!他其中一个竞选承诺就是在镇上建立起互联网,并连接到所有的农场。当然,他需要你的帮助。约翰已经给他的农场安排了一条高速的网络线路,他想把这条线路共享给其他农场。为了用最小的消费,他想铺设最短的光纤去连接所有的农场。你将得到一份各农场之间连接费用的列表,你必须找出能连接所有农场并所用光纤最短的方案。每两个农场间的距离不会超过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 最短网络 (最小生成树)(克鲁斯卡尔算法)相关推荐

  1. 最小生成树克鲁斯卡尔算法

    文章目录 一.什么是克鲁斯卡尔? 二.原理 三.代码实现 一.什么是克鲁斯卡尔? 克鲁斯卡尔算法是求连通网的最小生成树的另一种方法.与普里姆算法不同,它的时间复杂度为O(eloge)(e为网中的边数) ...

  2. 数据结构图之二(最小生成树--克鲁斯卡尔算法)

    [1]克鲁斯卡尔算法 普里姆算法是以某顶点为起点,逐步找各顶点上最小权值的边来构建最小生成树. 克鲁斯卡尔算法是直接以边为目标去构建. 因为权值是在边上,直接去找最小权值的边来构建生成树也是很自然的想 ...

  3. 最小生成树------克鲁斯卡尔算法(数据结构)

    树(Tree):如果一个无向连通图中不存在回路,则这种图称为树. 生成树 (Spanning Tree):无向连通图G的一个子图如果是一颗包含G的所有顶点的树,则该子图称为G的生成树. 生成树是连通图 ...

  4. 贪心算法(Greedy Algorithm)最小生成树 克鲁斯卡尔算法(Kruskal#39;s algorithm)

    克鲁斯卡尔算法(Kruskal's algorithm)它既是古典最低的一个简单的了解生成树算法. 这充分反映了这一点贪心算法的精髓.该方法可以通常的图被表示.图选择这里借用Wikipedia在.非常 ...

  5. 最小生成树(克鲁斯卡尔算法)

    关于克鲁斯卡尔算法他是针对边的.而普里姆算法是针对顶点的. 下面还是用普里姆算法的图. 如下: 因此可以构造边集数组. 如下图所示: 代码如下: int Find(int *parent, int f ...

  6. 最小生成树——克鲁斯卡尔算法

      最小生成树的概念就不说了,本文主要是克鲁斯卡尔算法实现,而且用到了并查集思想.相较于prim算法,克鲁斯卡尔更容易理解:在不形成环的情况下,选取最小的权值边,直到点的个数减一.对于环的判断就使用并 ...

  7. 最小生成树算法普利姆算法和克鲁斯卡尔算法实现

    最小生成树算法: 普里姆算法:顶点集合N,辅助顶点集合S,初始化中,将出发点vi加入S,并从N中删除 1.从顶点集合N中找到一条到集合S最近的边(vi,vj),存储该边,并将vj从N移到S中 2.重复 ...

  8. java克鲁斯卡尔算法,最小生成树( 克鲁斯卡尔算法)

    最小生成树( 克鲁斯卡尔算法) /* Name: Copyright: Author: Date: 01-12-14 20:17 Description: 最小生成树( 克鲁斯卡尔算法) 关于并查集的 ...

  9. 利用克鲁斯卡尔算法求最小生成树

    思路:最小生成树即为无向连通图G的一个子图如果是一颗包含G的所有顶点且权最小的树则称为最小生成树.克鲁斯卡尔算法的基本思想是以边为主导地位,始终选择当前可用的(所选的边不能构成回路)最小权值边.所以第 ...

最新文章

  1. SSL For Free 申请免费https SSL 凭证
  2. Asp.net控件开发学习笔记(三)-控件开发基础
  3. ccs安装多版本编译器离线_windows 安装mysql多版本 主从复制
  4. SQL Server - 高可用与灾难恢复(HADR)技术 -- AlwaysOn可用性组(理论篇)
  5. sox处理mp3_音频处理常用Linux命令总结(一)
  6. 初探下一代SIEM核心技术发展趋势
  7. 浅入深出Vue:注册
  8. 时隔5年 三星要重回苹果闪存零部件供应商名单了
  9. 矩阵特征值的一些特点
  10. 文件备份软件 FreeFileSync
  11. C语言贪吃蛇大作业总结,C语言实现贪吃蛇游戏
  12. Mac中设置右键新建TXT文件
  13. 奥克兰大学计算机科学专业学费,奥克兰大学各专业学费
  14. 通过路由器映射 配置 远程访问
  15. SSL Virtual Private Network的技术分析
  16. 《Head First 设计模式》例子的C++实现(4 单件模式)
  17. python中datetime是什么意思_Python中time和datetime的区别
  18. 万向区块链行业研究:区块链技术在绿色金融领域的应用分析
  19. 箱型图/盒图 jupyter Notebook
  20. 【iOS】—— ARC学习

热门文章

  1. 【云炬mysql数据库笔记】 Work1
  2. html 加入li的作用,HTML的li有什么作用?
  3. NorthWest University - Medical Engineering
  4. MSSQL的多层嵌套查询
  5. go语言中map的使用
  6. ARP协议抓包分析 -- wireshark
  7. 数据库修改,删除的操作必须有保险操作。
  8. 双向循环链表的选择排序
  9. 为自增(++)自减(--)运算符正名
  10. UE4 + UnLua + VSCode + LuaPanda调试