图的最小生成树——例题

最短网络agrinet 【题目描述】 农民约翰被选为他们镇的镇长!他其中一个竞选承诺就是在镇上建立起互联网,并连接到所有的农场。当然,他需要你的帮助。约翰已经给他的农场安排了一条高速的网络线路,他想把这条线路共享给其他农场。为了用最小的消费,他想铺设最短的光纤去连接所有的农场。你将得到一份各农场之间连接费用的列表,你必须找出能连接所有农场并所用光纤最短的方案。每两个农场间的距离不会超过100000。 【输入】 第一行: 农场的个数,N(3<=N<=100)。 第二行至结尾:后来的行包含了一个N*N的矩阵,表示每个农场之 阅读详情

最优布线问题

题目描述 Description

农民约翰被选为他们镇的镇长!他其中一个竞选承诺就是在镇上建立起互联网,并连接到所有的农场。当然,他需要你的帮助。 约翰已经给他的农场安排了一条高速的网络线路,他想把这条线路共享给其他农场。为了使花费最少,他想铺设最短的光纤去连接所有的农场。 你将得到一份各农场之间连接费用的列表,你必须找出能连接所有农场并所用光纤最短的方案。 每两个农场间的距离不会超过100000

输入描述 Input Description

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

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

输出描述 Output Description

只有一个输出,是连接到每个农场的光纤的最小长度和。

样例输入 Sample Input

4

0  4  9 21

4  0  8 17

9  8  0 16

21 17 16  0

样例输出 Sample Output

28

分析:

这题是明显的典型的最小生成树问题,直接使用Prim算法求解。

 

#include<bits/stdc++.h>

using namespace std;

const int INF=1<<31-1;

int lowc[102],cost[102][102];

bool vis[102];

int prim(int n)

{ for(int i=1;i<=n;i++) lowc[i]=cost[1][i];

    int minc=INF,p=-1,ans=0;

    vis[1]=true;

  for(int j=2;j<=n;j++)

  {  minc=INF; 

     for(int i=2;i<=n;i++)

    {   if(!vis[i]&&lowc[i]<minc) 

         { minc=lowc[i];

           p=i;

         }

    }

  ans+=minc;

  vis[p]=true;

  for(int j=1;j<=n;j++)

      {  if(!vis[j]&&lowc[j]>cost[j][p])

      lowc[j]=cost[j][p];

       }

  }

   return ans;

}

void work()

{ int t;

  scanf("%d",&t);

  memset(vis,false,sizeof(vis));

  for(int i=1;i<=t;i++)

  for(int j=1;j<=t;j++)

  {scanf("%d",&cost[i][j]);

  }

  printf("%d\n",prim(t));

}

int main()

{ work();

}

 

电话连线

一个国家有n个城市。若干个城市之间有电话线连接,现在要增加m条电话线(电话线当然是双向的了),使得任意两个城市之间都直接或间接经过其他城市有电话线连接,你的程序应该能够找出最小费用及其一种连接方案。

输入描述 Input Description

    输入文件的第一行是n的值(n<=100).

    第二行至第n+1行是一个n*n的矩阵,第i行第j列的数如果为0表示城市i与城市j有电话线连接,否则为这两个城市之间的连接费用(范围不超过10000)。

输出描述 Output Description

       输出文件的第一行为你连接的电话线总数m,第二行至第m+1行为你连接的每条电话线,格式为i j,(i<j), i j是电话线连接的两个城市。输出请按照Prim算法发现每一条边的顺序输出,起始点为1.

       第m+2行是连接这些电话线的总费用。

样例输入 Sample Input

5

0 15 27 6 0

15 0 33 19 11

27 33 0 0 17

6 19 0 0 9

0 11 17 9 0

样例输出 Sample Output

2

1 4

2 5

17

数据范围及提示 Data Size & Hint

n<=100

#include<stdio.h>

#include<string.h>

#define INF 0x7fffffff

#define Max 105

int map[Max][Max],cost[Max],head[Max],tail[Max],sum,m,cnt;

void prim()

{

     int i,j,k,minn,flag,vis[Max],last[Max];

     memset(vis,0,sizeof(vis));

     vis[1]=1;sum=0;cnt=0;

     for(i=1;i<=m;i++)

         {

           cost[i]=map[1][i];

           last[i]=1;

         }

     for(i=1;i<m;i++)

         { 

           minn=INF;

           for(j=1;j<=m;j++)

               {

                  if(!vis[j]&&cost[j]<minn)

                   {

                       minn=cost[j];

                       flag=j;

                   }

               }

               if(minn)

                 {

                    head[cnt]=last[flag];

                    tail[cnt++]=flag;

                  }

               sum+=minn;

               vis[flag]=1; 

               for(j=1;j<=m;j++)

                   if(!vis[j]&&cost[j]>map[flag][j])

                      {

                         cost[j]=map[flag][j];

                         last[j]=flag;

                      }

               }

         }

int main()

{

     while(scanf("%d",&m)==1)

           {

               int i,j;

          for(i=1;i<=m;i++)

          for(j=1;j<=m;j++)

               scanf("%d",&map[i][j]);

               prim();

               printf("%d\n",cnt);

          for(i=0;i<cnt;i++)

               {

                  if(head[i]<tail[i])

                  printf("%d %d\n",head[i],tail[i]);

                  else printf("%d %d\n",tail[i],head[i]);

               }

         printf("%d\n",sum);

           }

  return 0;

}

 

 

 

1350:【例4-11】最短网络(agrinet) 阅读详情

相关推荐

usaco3.1解题报告1

本章主要衔接第二章,题目类型不定描述农民约翰被选为他们镇的镇长!他其中一个竞选承诺就是在镇上建立起互联网,并连接到所有的农场。当然,他需要你的帮助。约翰已经给他

最短网络---------------------------------图论(最小生成树)

农夫约翰被选为他们镇的镇长! 他其中一个竞选承诺就是在镇上建立起互联网,并连接到所有的农场。 约翰已经给他的农场安排了一条高速的网络线路,他想把这条线路共享给其他农场。 约翰的农场的编号是1,其他农场的编号是 2∼n。 为了使花费最少,他希望用于连接所有的农场的光纤总长度尽可能短。 你将得到一份各农场之间连接距离的列表,你必须找出能连接所有农场并使所用光纤最短的方案。 输入格式 第一行包含一个整数...

qq_43690454的博客 626

利用Arcgis发布wmts服务

使用发布 GIS 服务连接连接到 ArcGIS Server 站点后,可以将各种 GIS 资源(如地图文档、数据库以及服务定义)发布到服务器上。此外,还可以添加、删除、启动和停止服务。使用管理 GIS 服务器连接到 ArcGIS Server 站点后,可以编辑各种服务器属性,例如配置存储位置、集群配置、参与到该站点中的计算机列表以及管理站点的数据存储。通过使用 GIS 服务连接建立连接后,可以查看并使用发布到该站点的服务。但不能编辑服务器或服务属性、发布服务,也不能添加、删除、启动、停止或暂停服务。

ghgfsasxda的博客 2392

Translate:USACO/agrinet

来自"NOCOW" 跳转到: 导航, 搜索 Agri-Net最短网络 译 by Leontea 目录 1 描述 2 格式 3 SAMPLE INPUT 4 SAMPLE OUTPUT [编辑] 描述 农民约翰被选为他们镇的镇长!他其中一个竞选承诺就是在镇上建立起互联网,并连接到所有的农场。当然,他需要

... 576

Unity Shader变体优化实战:从内存削减到打包加速

本文深入探讨了Unity项目中Shader变体数量爆炸导致的打包缓慢、内存占用过高及包体臃肿等问题。核心解决方案是通过精准的Shader变体裁剪,即收集项目实际用到的变体形成“白名单”,并利用IPreprocessShaders接口在打包时剔除无用变体。实战表明,该方法能显著提升打包速度并大幅降低运行时内存。

weixin_29300241的博客 217

NuPlayer 之 Renderer

触发postDrainAudioQueue_l()或postDrainVideoQueue()开始渲染。解码器输出数据 → NuPlayer::Decoder::onMessageReceived。音频数据存入mAudioQueue,视频数据存入mVideoQueue。• 每次写入后通过mNotifyConsumed通知解码器。• 通过AudioSink::write()写入音频设备。• 根据VSync信号和音频时钟调整渲染时机。• 通过Surface直接提交给显示系统。

aningxiaoxixi的博客 304

已知一个图的顶点集V和边集E分别为:V={1,2,3,4,5,6,7}; E=... 用克鲁斯卡尔算法(Kruskal)得到最小生成树,试写出在最小生成树中依次得到的各条边。

已知一个图的顶点集V和边集E分别为:V={1,2,3,4,5,6,7}; E={(1,2)3,(1,3)5,(1,4)8,(2,5)10,(2,3)6,(3,4)15,(3,5)12,(3,6)9,(4,6)4,(4,7)20,(5,6)18,(6,7)25};用克鲁斯卡尔算法(Kruskal)得到最小生成树,试写出在最小生成树中依次得到的各条边。

Blog 2万+

手把手教你用LTspice仿真扬声器阻抗曲线(附Dayton/Focal型号库)

本文详细介绍了如何使用LTspice仿真软件构建高精度扬声器模型,包括获取Dayton/Focal等厂商的SPICE模型库、模型导入方法、阻抗测试电路搭建及仿真设置。通过手把手教学,帮助读者快速掌握扬声器阻抗曲线的仿真技术,提升音响系统设计效率。

weixin_26897585的博客 388

关于图的例题(邻接矩阵、邻接表、深度遍历、广度遍历、最小生成树)

请写出图的邻接矩阵和邻接表,深度和广度遍历结果,最小生成树的结果 1.邻接矩阵 详见本人博客:图的存储结构:邻接矩阵 2.邻接表 详见本人博客:图的存储结构:邻接表 3.深度遍历结果:1234657 (借助邻接矩阵进行深度遍历,从第一行开始遍历V1的所有邻接点,遇到V1邻接点就跳入邻接点所在行,遍历此结点中未被访问过的邻接点)(递归思想) 详见本人博客:图的遍历:深度优先遍历(DFS) 4.广度遍历结果:1234567 (遍历第一行(结点V1的所有邻接点),遍历完V1的所有邻接点,然后遍历第二行(V.

一个搬运知识的笨小孩 5810

使用vcpkg快速安装opencascade并自动配置部署开发环境

广泛的开源库:vcpkg 提供了上千个流行的 C++ 开源库,用户可以通过简单的命令安装和集成这些库,包括 Boost、OpenCV、SQLite、fmt 等。确保包版本一致性:通过 vcpkg.json 文件,开发者可以指定依赖的库版本,确保项目在不同环境下的构建结果一致,避免由于依赖库版本不一致而导致的构建问题。强大的社区支持:Vcpkg 是开源项目,拥有活跃的社区和微软团队的支持,提供了稳定的更新和问题修复。快速更新:Vcpkg 社区活跃,库的更新速度较快,开发者可以迅速获得库的最新版本。

loujiand的博客 2293

RK3568 MIPI屏幕启动异常:从uboot logo到黑屏的排查与修复

本文详细分析了RK3568平台MIPI屏幕在启动过程中,从uboot阶段正常显示logo到内核阶段黑屏的典型故障。通过硬件测量与软件调试,最终定位问题根源在于电源时序,并提供了在设备树中为屏幕供电的regulator节点添加`regulator-boot-on`属性的关键解决方案,有效解决了因内核启动早期电源管理导致的显示异常。

weixin_29161719的博客 540

第三部分 图论算法 (第二章 最小生成树)例题

例题一:繁忙都市 link 思路: Kruskal模板题. #include <bits/stdc++.h> using namespace std; const int N = 1e5 + 10; struct node { int u, v, w; } p[N]; int n, m, tot, k, f[N]; bool cmp(node a, node b) {return a.w < b.w;} int find(int x) {return x == f[x] ?

蒟蒻こんにゃく 511

基于C#的软PLC梯形图编辑器开发实战

本文详细介绍了基于C#开发软PLC梯形图编辑器的实战过程。文章从核心数据结构设计入手,阐述了如何利用C#的面向对象特性构建梯形图元素模型,并实现了图形编辑、指令表输入、逻辑连接拓扑重建等关键功能。重点剖析了模拟PLC执行引擎的扫描周期与能流传递算法,让梯形图逻辑在PC上“活”起来。最后探讨了定时器指令实现、性能优化及项目集成等进阶内容,为工业自动化软件集成提供了灵活高效的解决方案。

weixin_28314575的博客 404

『最小生成树』Prim算法——加点法(优先队列/堆优化 + C++实现 + 例题)

『算法原理』          在一个连通网的所有生成树中,各边的代价之和最小的那颗生成树称为该连通网的最小代价生成树(Minimum Cost Spanning Tree),简称最小生成树(MST)。         Prim算法之所以叫加点法,就是因为其本质是一个点一个点地加入到最小生成树中。 算法步骤如下: 设有一无向连通图G,有n个顶点。 a.初始化——任意找图中的一点作为源点,...

Miserable_ccf的博客 4071

迅投miniQMT量化交易实战指南:从入门到自动化交易系统构建

迅投miniQMT量化交易实战指南摘要 本文全面介绍迅投miniQMT量化交易系统的开发流程,重点包括: 环境配置:详细说明miniQMT极简模式的安装步骤,包括xtquant库获取、Python版本要求及验证方法 行情数据模块:解析xtdata模块的核心功能,包括: 获取板块分类与股票列表 查询合约基础信息 下载历史K线数据(支持tick、分钟、日线等周期) 交易执行模块:介绍xttrader模块的交易API,涵盖: 账户连接与初始化 订单管理(下单、撤单、查询) 持仓与资产查询 实战开发:提供可直接运行

huanghm88的专栏 665

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

最小生成树-Kruskal

并查集是一种树型的数据结构,用于处理一些不相交集合的合并及查询问题。主要思路是用一个数组记录其根节点,通过此根节点确定某数所在的集合。

2301_76258490的博客 1913

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

最小生成树(MST)Kruskal算法 + hdu三道例题

#最小生成树 (MST) 标签(空格分隔): 算法思想 在无向图中,连通且不含 圈 的图称为树。 给定无向图G = (V,E),连接G中所有点,且边集是E的子集的树称 为G的生成树,而权值最小的生成树称为最小生成树(MST) 常见算法: Kruskal 算法 和 Prim 算法。 圈指的是任选一个顶点为起点,沿着不重复的边,经过不重复的顶点为途径,之后又回到起点的闭合途径称为圈。(可以类似理解...

一个蒟蒻的博客 745

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

搜索与图论第七期 Prime算法

最小生成树prim算法简单理解他的寻找路径的过程,从一个顶点V0开始,首先找到所有与V0相关联的顶点,查看这些顶点到V0的加权值,找出最小的一个,然后将该顶点纳入已统计顶点中。寻找第三个顶点时,将V0、之前已算出的顶点与所有相关联且未统计的顶点,找出最小的一个,纳入已统计顶点中。prim算法是实现图的最小生成树。既然是图,就假设包含n个顶点,m条边。prim算法是从顶点出发的,其算法时间复杂度与顶点数目有关系。从某个顶点开始,假设v0,此时v0属于最小生成树节点中的一个元素,该集合假设u,剩下的V-v0为待

2301_80882026的博客 756

【图论】最小生成树

最小生成树。

triticale的博客 1302

2022.3.28 图论——KRUSKAL 最小生成树算法

数组完整输出 + Arrays.sort用法

LGoGoGo的博客 1018

图论-最小生成树-基础

首先给出生成子图的定义(From OI Wiki):嗯……有点抽象,不妨简化一下:有一个图\(G\),如果删去\(G\)中的若干条边与若干个点得到一个图\(G'\),且图\(G'\)还保证连通,则称\(G'\)为\(G\)的生成子图。那么显然,如果\(G'\)是一棵树,那么\(G'\)称为\(G\)的生成树。显然,生成树不一定唯一。那么,最小生成树的“最小”决定于你要求什么,是点权或是边权?由你自己决定。

weixin_42531923的博客 97

最小生成树的基础应用

Prim&Kruskal的一个核心思想 Prim是每次选择距离最近的边,然后加进来; Kruskal是将边权升序排序,每次连接两个不连通的点; 那如何证明这样选择边是正确的? 这两个算法的证明思路都是一样的; 假设不选当前这条边,最终得到了一棵树,我们将当前这条边加上,必然会形成环;在这个环上,一定可以找出一条长度不小于(因为按两个算法,我们这条边都是最小的)当前边的边,我们用当前这条边去替换找到的这条边,结果一定不会变差(最坏不变,可能变小); 例题 Kruskal适用于稀疏图,Prim适用于稠

weixin_45724872的博客 3447
上一篇: 图的最短路径——Floyd例题
下一篇: 人间真实:程序员的 60 个崩溃瞬间!
黑色吊椅
博客等级 码龄9年 102粉丝 78原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值