prim+优先队列模板:

 #include<stdio.h>    //大概要这些头文件
#include<string.h>
#include<queue>
#include<vector>
#include<algorithm>
using namespace std;
typedef pair<int,int> pii; int head[],next[],point[],val[],size,dist[]; //前向星及dist数组
bool vis[]; 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=;
memset(dist,-,sizeof(dist));
memset(vis,,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]=;
vis[s]=;
while(!q.empty()){
pii u=q.top();
q.pop();
if(vis[u.second])continue;
vis[u.second]=;
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]==-)){
dist[j]=val[i];
q.push(make_pair(dist[j],j));
}
}
}
printf("%d\n",ans);
}

最新文章

  1. BZOJ4699 : 树上的最短路
  2. Java设计模式(十一) 享元模式
  3. JUC回顾之-CyclicBarrier底层实现和原理
  4. python 练习 30
  5. 《精通SQL Server 2008》笔记
  6. DD_belatedPNG,解决 IE6 不支持 PNG-24 绝佳解决方案
  7. ios设备 分辨率(转)
  8. String 和 InputStream 互转方式
  9. Mac下Apache服务器配置
  10. Cocos2d—X游戏开发之CCTableView详解(十一)
  11. Go语言入门——dep入门
  12. S-CMS企业建站v3几处SQL注入
  13. 解释代码((n &amp; (n-1))== 0)的含义
  14. ssh 22端口号拒绝
  15. docker日志设置定期清理
  16. 不修改模板的前提下修改VisualState中的某些值
  17. 解决操作WordPress时提示输入FTP信息
  18. python连接mysql数据库封装
  19. 区间 桂林电子科技大学第三届ACM程序设计竞赛
  20. Loadrunner上传文件解决办法(大文件)

热门文章

  1. asp.net Core MVC + webpack 笔记
  2. Lua面向对象 --- 多态
  3. 关于 [TNS-12516 TNS:listener could not find instance with matching protocol stack ]
  4. Freemarker生成HTML静态页面
  5. English trip -- VC(情景课)1 D
  6. XSD与C#Code以及XML之间的相互关心
  7. Java基础-集合(12)
  8. layedit
  9. 『Glob』常用方法记录
  10. thinkphp %s %d %f