prim队列优化模板
来源:互联网 发布:淘宝买家等级提升 编辑:程序博客网 时间:2024/06/03 05:07
#include<stdio.h> //大概要这些头文件#include<string.h>#include<queue>#include<vector>#include<algorithm>using namespace std;typedef pair<int,int> pii;int head[30],next[200],point[200],val[200],size,dist[30]; //前向星及dist数组bool vis[30];void add (int a,int b, int v){ //加边及去重 int i; for(i=head[a];~i;i=next[i]){ if(point[i]==b){ if(val[i]>v)val[i]=v; return; } } point[size]=b; val[size]=v; next[size]=head[a]; head[a]=size++;}struct cmp{ //重载小根堆 bool operator()(pii a,pii b){ return a.first>b.first; }};void prim(int s){ //prim函数,传入图中一点 int i,ans=0; memset(dist,-1,sizeof(dist)); memset(vis,0,sizeof(vis)); priority_queue<pii,vector<pii>,cmp>q; for (i=head[s];~i;i=next[i]){ dist[point[i]]=val[i]; q.push(make_pair(dist[point[i]],point[i])); } dist[s]=0; vis[s]=1; while(!q.empty()){ pii u=q.top(); q.pop(); if(vis[u.second])continue; vis[u.second]=1; ans+=u.first; for(i=head[u.second];~i;i=next[i]){ int j=point[i]; if(!vis[j]&&(dist[j]>val[i]||dist[j]==-1)){ dist[j]=val[i]; q.push(make_pair(dist[j],j)); } } } printf("%d\n",ans);}
0 0
- prim队列优化模板
- prim及其:队列优化
- 优先队列优化prim算法
- 模板:Dijkstra 队列优化
- 最小生成树模板(prim+kruskal+prim的优化)
- ZOJ 1586 QS Network prim优化模板
- 【模板】Prim+堆优化 最小生成树
- dijkstra+优先队列优化 模板
- 最小生成树模板(Prim+优先队列)
- 多重背包模板--二进制优化模板&&单调队列优化模板
- prim模板
- Prim 模板
- 模板-prim
- prim模板
- Prim模板
- Prim 模板
- Prim模板
- 模板:Prim
- hibernate表与表之间一对多关系配置初体验
- ZOJ 2969Easy Task
- 将一个字符串中的空格替换成“ %20”
- HM编码器代码阅读(40)——帧内预测的总结
- ZOJ 2970Faster, Higher, Stronger
- prim队列优化模板
- 0C——2.面向对象
- 字符界面的优势
- C#搭建三层架构
- 安卓开源项目周报0215
- ZOJ 2971Give Me the Number
- 过滤器、监听器、批量操作、文件上传下载
- BZOJ2038【莫队算法】
- 单片机双色点阵显示1种颜色