最小生成树--prim+优先队列优化模板
prim+优先队列模板:
1 #include<stdio.h> //大概要这些头文件 2 #include<string.h> 3 #include<queue> 4 #include<vector> 5 #include<algorithm> 6 using namespace std; 7 typedef pair<int,int> pii; 8 9 int head[30],next[200],point[200],val[200],size,dist[30]; //前向星及dist数组 10 bool vis[30]; 11 12 void add (int a,int b, int v){ //加边及去重 13 int i; 14 for(i=head[a];~i;i=next[i]){ 15 if(point[i]==b){ 16 if(val[i]>v)val[i]=v; 17 return; 18 } 19 } 20 point[size]=b; 21 val[size]=v; 22 next[size]=head[a]; 23 head[a]=size++; 24 } 25 26 struct cmp{ //重载小根堆 27 bool operator()(pii a,pii b){ 28 return a.first>b.first; 29 } 30 }; 31 32 void prim(int s){ //prim函数,传入图中一点 33 int i,ans=0; 34 memset(dist,-1,sizeof(dist)); 35 memset(vis,0,sizeof(vis)); 36 priority_queue<pii,vector<pii>,cmp>q; 37 for (i=head[s];~i;i=next[i]){ 38 dist[point[i]]=val[i]; 39 q.push(make_pair(dist[point[i]],point[i])); 40 } 41 dist[s]=0; 42 vis[s]=1; 43 while(!q.empty()){ 44 pii u=q.top(); 45 q.pop(); 46 if(vis[u.second])continue; 47 vis[u.second]=1; 48 ans+=u.first; 49 for(i=head[u.second];~i;i=next[i]){ 50 int j=point[i]; 51 if(!vis[j]&&(dist[j]>val[i]||dist[j]==-1)){ 52 dist[j]=val[i]; 53 q.push(make_pair(dist[j],j)); 54 } 55 } 56 } 57 printf("%d\n",ans); 58 }
转载于:https://www.cnblogs.com/cenariusxz/p/4522320.html
最小生成树--prim+优先队列优化模板相关推荐
- poj1861 最小生成树 prim amp; kruskal
// poj1861 最小生成树 prim & kruskal // // 一个水题,为的仅仅是回味一下模板.日后好有个照顾不是#include <cstdio> #include ...
- dijkstra 的优先队列优化
既然要学习算法,就要学习到它的精髓,才能够使用起来得心应手. 我还是远远不够啊. 早就知道,dijkstra 算法可以用优先队列优化,我却一直不知道该怎样优化.当时,我的思路是这样的:假设有n个顶点, ...
- C/C++数据结构——道路建设(最小生成树Prim)
题目描述 随着如今社会的不断变化,交通问题也变得越来越重要,所以市长决定建设一些公路来方便各个城市之间的贸易和交易.虽然市长的想法很好,但是他也遇到了一般人也经常头疼的问题,那就是手头的经费有限--在 ...
- Dijkstra算法堆/优先队列优化
Dijkstra算法堆/优先队列优化 前言 额外知识简介 堆与优先队列 STL库 重载 Dijkstra分析及优化 分析优化 代码实现 存储结构 边 点 优先队列 函数 初始化 添加边 Dijkstr ...
- 最小生成树 - Prim算法
最小生成树 - Prim算法 思路: 采用 贪心策略,每次选取连通块外延的最短边和对应的点放入连通块,再更新新的连通块外延的边.连通部分逐渐扩大,最后将整个图连通起来,并且边长之和最小. 时间复杂度: ...
- 可视化最小生成树Prim、Kruskal
代码下载链接:(41条消息) 可视化最小生成树Kruskal,DEV配EGE-C文档类资源-CSDN文库 代码下载链接:(41条消息) 可视化最小生成树Prim,DEV配EGE-C文档类资源-CSDN ...
- P2048 [NOI2010] 超级钢琴(ST表 + 优先队列优化)
P2048 [NOI2010] 超级钢琴 题目 小 Z 是一个小有名气的钢琴家,最近 C 博士送给了小 Z 一架超级钢琴,小 Z 希望能够用这架钢琴创作出世界上最美妙的音乐. 这架超级钢琴可以弹奏出 ...
- C++ 读入优化与输出优化 模板
简介 C++ 是一种神奇的编程语言-- 自然,读入和输出也有着许多种形式: 如:scanf(),cin>>,cout<<,printf()scanf(),cin>> ...
- 2018南京网络赛L题 Magical Girl Haze(分层图+优先队列优化的dijkstra)
使用优先队列优化过的dijkstra时间复杂度可以达到O(v*logn),还是很快的. #include <iostream> //最好是用long long ...
最新文章
- 什么是区块链智能合约?
- 这里有一份福利“拍了拍”你
- SSM整合支付宝支付功能
- GNU make manual 翻译(四十三)
- 学计算机随随便便上万,大学“最烧钱”专业排行榜,“家境一般”慎入,“土豪”请随意...
- 传感器信号处理仿真实验(c语言实现),均值滤波,滑动滤波
- 记一起因证书引发的支付宝支付异步通知接收不到的事故
- SpringBoot使用Mybatis-PageHelper
- 怎样让一个心浮气躁的孩子静下心学习?
- PAT1030 Travel Plan (30)---DFS
- 性能测试--jmeter如何发送post请求【4】
- hadoop集群的搭建与配置(2)
- 解决网易云音乐登录接口-460问题
- 速读《现代软件工程——构建之法》有感
- Orcad Pspice仿真
- 产品 • 互联网产品经理和硬件产品经理
- mysql修改时间为东八区,mysql时区设置为东八区
- 【Nodejs】448- 深入学习 Node.js Buffer
- 临床医疗运营数据分析
- 步进电机应用c语言程序设计实例,51单片机调节步进电机应用C语言程序设计
热门文章
- java父类子类顺序_java父类子类內部程序的执行顺序
- java 用户日志_2020年阿里巴巴最全Java、架构师、大数据、算法PPT技术栈图册
- 同一Word文档不同尺寸(纸张)页面的混排方法
- Linux上快速搭建Jenkins服务器 实现持续集成开发
- Interfacing to kdb+ from Java
- Java路径问题最终解决方案
- spring的log4j listener(webAppRootKey)
- leecode_二叉树中序遍历
- C#调用SQL Server分页存储过程
- 暴力求解——最大乘积 Maximum Product,UVa 11059