最小生成树 prime+heap
2024-10-14 18:04:52
改一个错误真不容易,刚开始没有加上used数组,没有判断每个顶点是否已经加入到数组当中,结果同一个顶点被pop不止一次。
struct edge{int to,cost;};
typedef pair<int,int> P;//first集合X到i的最短距离,second点的编号
int ranchNumber,roadNumber;//顶点个数,道路个数
int mincost[];//每个顶点到集合x的最短距离
bool used[];//每个顶点是否已经加入到集合中
vector<edge> g[];
//顶点编号从0开始;
int heapPrime(){
priority_queue<P,vector<P>,greater<P> > que;
fill(mincost,mincost+,INF);
fill(used,used+,false);
mincost[]=;
int ans=;
que.push(P(mincost[],));
for(int j=;j<ranchNumber;j++){
P p=que.top();
while(used[p.second]==true){
que.pop();
p=que.top();
}
que.pop();
used[p.second]=true;
ans+=p.first;
int e=p.second;
for(int i=;i<g[e].size();i++){
edge ee=g[e][i];
if(mincost[ee.to]>ee.cost){
mincost[ee.to]=ee.cost;
que.push(P(mincost[ee.to],ee.to));
}
}
}
return ans;
}
最新文章
- Fastcgi介绍和php中fastcgi的应用
- 关于tomcat8在windows2008下高并发下问题的解决方案
- MongoDB Tool
- 关于android的分辨率
- jquery 获取 CheckBox 的状态
- C语言计算程序运行时间
- grunt 构建工具(build tool)初体验
- 1.Repeater控件
- QWidget中嵌入win32 window(使用QWindow和QWidget::createWindowContainer)
- write a macro to judge big endian or little endian
- SSE2 Intrinsics各函数介绍[转]
- html中返回上一页
- 网页上弹出pop窗口实例,(document).height()与$(window).height()的区别
- mysql数据库的安装及体系说明
- Linux0.11 中对地址的管理
- spring boot 2.0 集成 shiro 和 pac4j cas单点登录
- java提高(4)---数组增删 list删除 map删除
- 自学Python4.6-迭代器
- 【学习笔记 边分树】【uoj400】【CTSC2018】暴力写挂
- 排序算法<;No.3>;【桶排序】
热门文章
- Wordpress显示文章摘要
- Spring Mvc配置多视图 - tiles, velocity, freeMarker, jsp
- iOS链接库的冲突
- 对于eclipse building workspaces 慢的问题,解决方法
- shell编程学习笔记(六):cat命令的使用
- 理解ThreadPoolExecutor线程池的corePoolSize、maximumPoolSize和poolSize
- python pip 安装包报 编码问题
- redis 4.0.8 源码包安装集群
- Docker入门 - 002 Docker 的简单操作
- C#面试题(转载) SQL Server 数据库基础笔记分享(下) SQL Server 数据库基础笔记分享(上) Asp.Net MVC4中的全局过滤器 C#语法——泛型的多种应用