Poj1258_Agri-Net(最小生成树)

poj1258 Agri-Net 最小生成树 prim kruskal 模板 Agri-Net Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 56702   Accepted: 23513 Description Farmer John has been elected mayor of his town! One of his campa 阅读详情

一、Description(poj1258)

Farmer John has been elected mayor of his town! One of his campaign promises was to bring internet connectivity to all farms in the area. He needs your help, of course.
Farmer John ordered a high speed connection for his farm and is going to share his connectivity with the other farmers. To minimize cost, he wants to lay the minimum amount of optical fiber to connect his farm to all the other farms.
Given a list of how much fiber it takes to connect each pair of farms, you must find the minimum amount of fiber needed to connect them all together. Each farm must connect to some other farm such that a packet can flow from any one farm to any other farm.
The distance between any two farms will not exceed 100,000.

Input

The input includes several cases. For each case, the first line contains the number of farms, N (3 <= N <= 100). The following lines contain the N x N conectivity matrix, where each element shows the distance from on farm to another. Logically, they are N lines of N space-separated integers. Physically, they are limited in length to 80 characters, so some lines continue onto others. Of course, the diagonal will be 0, since the distance from farm i to itself is not interesting for this problem.

Output

For each case, output a single integer length that is the sum of the minimum length of fiber required to connect the entire set of farms.
二、问题分析
        典型的求最小生成树问题,算法大多用Prim或者Kruskal算法。小弟用了Prim算法,这道题如果掌握了Prim算法,那么问题就迎刃而解了。可惜小弟数据结构学得不怎么踏实,有临时学了一遍,有点蛋疼。

       从单一顶点开始,普里姆算法按照以下步骤逐步扩大树中所含顶点的数目,直到遍及连通图的所有顶点。

  1. 输入:一个加权连通图,其中顶点集合为V,边集合为E;
  2. 初始化:Vnew = {x},其中x为集合V中的任一节点(起始点),Enew = {};
  3. 重复下列操作,直到Vnew = V:
    1. 在集合E中选取权值最小的边(u, v),其中u为集合Vnew中的元素,而v则不是(如果存在有多条满足前述条件即具有相同权值的边,则可任意选取其中之一);
    2. 将v加入集合Vnew中,将(u, v)加入集合Enew中;
  4. 输出:使用集合Vnew和Enew来描述所得到的最小生成树。

        这里我们改一下算法,是输出的是权值和。

三、Java代码

import java.util.Scanner;

public class Test {
	public static int prim(int[][] a, int count) {
        int sum = 0;
        int i, j, k;
        int[] lowcost = new int[count]; //保存相关定点间的权值
        int[] adjvex = new int[count]; //保存相关定点的下标
        for (i = 0; i < count; i++) {
            lowcost[i] = a[0][i];
            adjvex[i]=0;
        }
        for (i = 1; i < count; i++) {
            j=0;
            while(lowcost[j]==0){
            	j++;
            }
            for (k = 1; k < count; k++) {
                if ((lowcost[k]!=0) && (lowcost[k] < lowcost[j])) {
                    j = k;
                }
            }
            sum += lowcost[j];
            lowcost[j] = 0;
            for (k = 1; k < count; k++) {
                if (lowcost[k]!=0 && (a[j][k] < lowcost[k])) {
                    {
                        lowcost[k] = a[j][k];
                        adjvex[k] = j;
                    }
                }
            }
        }
        return sum;
    } 
	public static void main(String[] args) {
		 
		  Scanner cin=new Scanner(System.in);
		  int n;
		  while((n=cin.nextInt())!=-1){
		  int vertexNumber = n;
	      int arr[][] = new int[vertexNumber][vertexNumber];
	      for (int i = 0; i < vertexNumber; i++) {  
	          for (int j = 0; j < vertexNumber; j++) {  
	              arr[i][j]=cin.nextInt();
	          }  
	      }  
	      System.out.println(prim(arr,n));
	      n=-1;
		  }
	}
}


告别测序污染:手把手教你用Decontam+SCRUB+FEAST完成微生物组数据清洗全流程 本文详细解析了使用Decontam、SCRUB和FEAST三大工具完成微生物组数据清洗的全流程。从环境准备、数据导入到污染物识别、样本间污染校正及溯源分析,提供了一套可复用的污染校正工作流,帮助研究者提升数据质量,确保后续分析的可靠性。 阅读详情

相关推荐

粒子群算法实战:用Matlab解决旅行商问题(TSP)的完整代码解析

本文提供了使用粒子群算法解决旅行商问题的完整Matlab实战指南。通过将连续空间的粒子群算法进行离散化改造,采用基于交换序的策略来更新粒子位置与速度,并给出了从问题定义、数据结构设计、核心函数实现到主迭代循环的详细代码解析。文章还探讨了参数调优、性能优化及处理复杂TSP变体的进阶思路,为物流规划、路径优化等领域的工程应用提供了可直接复用的解决方案。

m2n3o4p5的博客 350

Agri-Net POJ - 1258(最小生成树)详解注释

题目链接-> 有n个农场,已知这n个农场都互相相通,有一定的距离,现在每个农场需要装光纤,问怎么安装光纤能将所有农场都连通起来,并且要使光纤距离最小,输出安装光纤的总距离 任意两个村庄之间的距离小于 100,000. Input 输入包含多组数据。对于每组数据, 第一行包含一个整数N表示农场的数量 (3 <= N <= 100). 接下来是一个NXN的邻接矩阵,表示各个村庄之间的...

weixin_44641254的博客 416

UNITY3D万人同屏,Dots万人同屏解决方案_类萌宠宠之战

UNITY3D弹幕游戏开发,万人同屏解决方案

6471

【POJ 1258】 Agri-Net

【POJ 1258】 Agri-Net

ACMer' 1147

FPGA防抄板实战:如何利用Xilinx芯片的“身份证”(DNA)实现你的加密锁?

本文深入探讨了如何利用Xilinx FPGA芯片的DNA(Device Native Authentication)功能实现硬件级加密保护,防止设计被抄袭。文章详细解析了DNA的物理实现、获取方式,并提供了从DNA到加密密钥的转换方法,以及构建商业级加密防护系统的实战方案。通过JTAG和原语两种读取方式的对比,帮助开发者选择最适合的方案。

weixin_42548829的博客 383

Mastercam软件二次开发:使用C#进行Mastercam二次开发

C#(发音为“C Sharp”)是一种现代、面向对象的编程语言,由微软开发,首次发布于2000年。它结合了C和C++的强大功能,同时引入了Java的垃圾回收机制,使得C#在开发效率和运行性能之间找到了一个良好的平衡点。C#的设计目标是提高开发者的生产力,它支持多种编程范式,包括面向对象、泛型、委托和事件等,这使得它成为开发Windows应用程序、Web应用程序、游戏(尤其是使用Unity引擎)和企业级应用的理想选择。

kkchenjj的博客 2214

POJ 1258:Agri-Net(最小生成树&&prim)

Agri-Net Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 38918   Accepted: 15751 Description Farmer John has been elected mayor of his town! One of h

TOKHE的专栏 953

C#面试题及详细答案120道(61-75)-- 多线程与异步

本文摘要了前后端面试题中关于线程与并发的核心知识点,包括线程与进程的区别(61题)、Thread/ThreadPool/Task的对比(62题)、线程安全实现方法(63题)、lock关键字的原理(64题)、Monitor类的进阶用法(65题)以及死锁的成因与避免(66题)。通过C#代码示例和表格对比,清晰展示了多线程编程的关键概念、应用场景及常见问题解决方案,适合开发者快速掌握面试高频考点。完整内容可访问专栏目录获取更多技术面试题解析。

大剑师兰特的GIS世界 1429

POJ(1258):Agri-Net(最小生成树)

Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 68523   Accepted: 28406 Description Farmer John has been elected mayor of his town! One of his campaign promises was to br...

qq_42018521的博客 375

IEC61850规约客户端软件开发实战(第二章)

本文介绍了基于IEC61850规约的客户端软件开发过程,重点阐述功能界面设计和服务端连接功能的实现。界面采用Qt框架设计,包含功能按钮区、数据模型展示区(使用QTreeWidget)和状态显示区。连接功能通过libiec61850开源库实现,详细说明了连接流程、句柄创建及状态管理的代码实现。测试结果表明系统能正确识别连接状态,并通过界面直观显示。文章为IEC61850规约软件开发提供了实用参考,下期将分享规约模型数据加载的实现过程。

半青年的博客 2855

linux系统宝塔服务器temp文件夹里总是被上传病毒php脚本

服务器时不时的会发送短信说你服务器有病毒,找到了这个tmp文件,删除了之后又有了。确实是有很多人就这么无聊,每天都攻击你的服务器。找了很久的原因,网上也提供了一大堆方法,但都是很简陋的答案,具体怎么操作并没有说。没办法只能自己去排查这个问题。从两个角度来考虑,第一是服务器系统问题,比如宝塔的漏洞。但一时半会看不出问题来。只能去排查自己的项目代码。最后了解到代码确实是存在漏洞的。但代码中也确实了很多的校验,为什么会存在漏洞了?这就不得不从上传的过程开始说起。

guiplan 1497

poj 1258 Agri-Net( java prim)

package prim;import java.util.Scanner;/**问题请参考http://poj.org/problem?id=1258 * @author rayli * @date:2014-7-29 下午1:38:22 * @题意 :Farmer John有当选为新镇长,他的竞选宣言就是把网络带入所有的farm。 * 现在给出farm的个数n,以及每两个farm之间的联网距离

萝卜@兔子的专栏 369

大唐杯历届省赛押题训练(6)

考试-TD-LTE无线网络设备介绍-TD-LTE网络架构一、单选题1TD-LTE的接入网E-UTRAN由下列哪些网元组成( )。0分/1分A、RNCB、BTSC、eNode BD、Node B提交答案:B正确答案:C考点TD-LTE网络架构解析暂无试题解析二、多选题1关于LTE网络整体结构,哪些说法是正确的( )0分/2分A、E-UTRAN用E-NodeB替代原有的RNC-NodeB结构B、E-NodeB间的接口为S1接口C、各网络节点之间的接口使用IP传输。

nimo观察者 634

(最小生成树)POJ1258Agri-Net

POJ1258Agri-Net 题意&思路: 给n个农场之间的距离,要铺设光缆使之两两连通,问最小铺设光缆的距离。 模板题。 代码: #include<iostream> #include<stdio.h> #include<stdlib.h> #include<algorithm> #include<string.h> #inc...

Z7784562的博客 395

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

prim算法 poj1258 Agri-Net 最小生成树基础题

Agri-NetTime Limit: 1000MS Memory Limit: 10000KTotal Submissions: 64460 Accepted: 26642DescriptionFarmer John has been elected mayor of his town! One of his campaign promises was to bring internet con...

bestsort 487

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

POJ 1258 Agri-Net (prim 最小生成树)

题目链接: POJ 1258 Agri-Net (prim 最小生成树) Description Farmer John has been elected mayor of his town! One of his campaign promises was to bring internet connectivity to all farms in the area. He n

Dextrad_ihacker的博客 644

POJ1258 Agri-Net(最小生成树)

题目链接:http://poj.org/problem?id=1573 解题思路: 最小生成树!!! AC代码: #include #include #include #include using namespace std; const int maxn=100010; int pa[maxn]; int n,m,sum; struct Edge { int

piaocoder 566

poj 1258 Agri-Net 基本&经典最小生成树

传送门:poj 1258 Agri-Net题目大意n个农场,已知这n个农场都互相相通,有一定的距离,现在每个农场需要装光纤,问怎么安装光纤能将所有农场都连通起来,并且要使光纤距离最小,输入的是邻接矩阵,输出安装光纤的总距离解题思路裸prim, 1. 随便找一个元素进行寻找 2. 找出和这个元素相邻的所有权值,如果不能到达表示无限大 3. 找到和这个元素相邻的最小权值,记录下来 4. 最小权值

woshinannan的专栏 362

POJ 1258 Agri-Net 最小生成树

POJ 1258 Agri-Net 最小生成树  题意:有n个点,给你一个方阵代表他们两两之间的距离,求最小生成树。  思路:大水题,直接prim解决。AC代码:// // main.cpp // L // // Created by LucienShui on 2017/5/11. // Copyright © 2017年 LucienShui. All rights reserved.

LucienShui 585

POJ 1258 Agri-Net(最小生成树)

POJ 1258 Agri-Net(最小生成树) http://poj.org/problem?id=1258 题意:        给你一个N顶点的无向图的距离邻接矩阵,问你使得整个图连通的最小边长和是多少? 分析:        最小生成树入门题,直接kruskal模板. AC代码: #include #include #include using namespace std

code 1032

poj1258 - Agri-Net (经典邻接矩阵 求最小生成树) (Prim & Kruskal)

Agri-Net Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 40028   Accepted: 16291 Description Farmer John has been elected mayor of his town! One of his campaig

ITCTO-疯男的优快云博客 878

最小生成树(Kruskal)POJ 1258 Agri-Net

最小生成树(Kruskal)POJ 1258 Agri-Net 题目链接: Agri-Net 题目基础: 最小生成树-Kruskal(克鲁斯卡尔)算法 思路: 题目大意: 有N个村庄,输入每个村庄到编号为1~N的距离,每个村落都需要网络覆盖,问网线的最短长度 题解: 最小生成树的裸题,按模板打 说个优化吧,样例给的是一个矩阵,但很容易想到,1到3的距离和...

[SZU_Crayon] 509

POJ 1258 Agri-Net 【最小生成树入门题目】

原题链接:http://poj.org/problem?id=1258 周四上了节数据结构终于知道何为最小生成树,晚上回寝,遂得此题! Agri-Net Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 29613   Accepted: 11750 Des

free斩 5512

POJ 1258 Agri-Net [最小生成树] 《挑战程序设计竞赛》2.5

POJ 1258 Agri-Net 求最小生成树

yoer77的博客 354

POJ-1258 Agri-Net(最小生成树+Prim算法)

POJ-1258 Agri-Net(最小生成树+Prim算法) Agri-NetTime Limit: 1000MS Memory Limit: 10000K   DescriptionFarmer John has been elected mayor of his town! One of his campaign promises was to bring internet connecti...

碳酸钙的01妖精的博客 252

POJ 1258 Agri-Net(最小生成树 Kruskal)

题意  给你农场的邻接矩阵  求连通所有农场的最小消耗 和上一题一样裸的最小生成树 #include #include #include using namespace std; const int N = 105, M = 10050; int par[N], ans, n, m, t; struct edge { int u, v, w;} e[M]; bool cmp(edge a,

Deng's site \# 1533

poj 1258-Agri-net

//poj 1258-Agri-net/* * 图论-最小生成树 * prim+priority_queue(邻接矩阵) 实现 * !!!有多组数据 * wa wa wa ac 248k 0ms */#include #include #include #include #include #include #include

gold_bridge 1002
上一篇: Poj1218_THE DRUNK JAILER(水题)
下一篇: Poj1163 The Triangle(动态规划求最大权值的路径)
TaiSung
博客等级 码龄15年 49粉丝 132原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值