博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
luoguP3366 [模板] 最小生成树
阅读量:6600 次
发布时间:2019-06-24

本文共 969 字,大约阅读时间需要 3 分钟。

题目链接:https://www.luogu.org/problemnew/show/P3366

思路:

求最小生成树的模板题,求MST有两种算法——Prim、Kruskal。

两者区别:Prim在稠密图中比Kruskal优,在稀疏图中比Kruskal劣。Prim是以更新过的节点的连边找最小值,Kruskal是直接将边排序。

两者其实都是运用贪心的思路

我使用的Prim算法(邻接表实现),head是表头结点数组,a是表结点数组,len记录未加入生成树的结点到生成树的最小距离,vis用来记录结点是否加入生成树。

使用邻接表的原因是邻接矩阵虽然耗空间小,但它只能表示边的信息,而不能表示点,所以还需要O(n)的枚举复杂度或比邻接表更多的内存来存储与边相关的信息,

所以使用邻接表的效率更高。

1 #include
2 #define R register int 3 using namespace std; 4 5 typedef pair
PII; 6 struct node{ 7 int v,w,next; 8 }a[400005]; //表结点 9 10 int n,m,k,cnt,sum,x,y,z;11 int head[5005],len[5005],vis[5005];12 priority_queue
,greater
> pq;13 14 void add(int u,int v,int w){15 a[++k].v=v;16 a[k].w=w;17 a[k].next=head[u];18 head[u]=k;19 }20 21 void prim(){22 len[1]=0;23 pq.push(make_pair(0,1));24 while(!pq.empty()&&cnt

 

转载于:https://www.cnblogs.com/FrankChen831X/p/10352630.html

你可能感兴趣的文章
HBase之表状态
查看>>
Red Hat 6.5 Samba服务器的搭建(登录访问)
查看>>
Elasticsearch配置文件说明
查看>>
30个优秀的CSS技术和实例 By 彬Go 2008-12-04
查看>>
【知识积累】C#值类型和引用类型区别
查看>>
org.tinygroup.dbfilter
查看>>
[原]在Fedora中编译Libevent测试实例
查看>>
路由表的构成
查看>>
初识java
查看>>
053(五十九)
查看>>
temporary Object and destructor
查看>>
【深度学习篇】---CNN和RNN结合与对比,实例讲解
查看>>
Java类加载机制
查看>>
(十)常用类库----数值类、字符串类
查看>>
node-gyp错误及解决办法
查看>>
使用Sqoop将数据导入到Hive中出现异常”org.apache.thrift.EncodingUtils.setBit(BIZ)B“解决办法...
查看>>
kuangbin专题七 HDU1698 Just a Hook (区间设值 线段树)
查看>>
【Android】Fragment真正意义上的onResume和onPause
查看>>
Avoiding memory leaks in POSIX thread programming, 多线程避免内存泄漏
查看>>
Centos 7 ssh登录速度慢
查看>>