【模板】prim的heap优化
2024-09-28 07:05:17
简单的代码。。
时间复杂度为O((n + m)logn)
大部分情况下还是跑不过kruskal的,慎用。
#include <cstdio>
#include <queue>
#include <cstring>
#define heap pair<int, int> using namespace std; int n, m, cnt, ans;
int head[], to[], next[], val[];
bool vis[];
priority_queue <heap, vector <heap>, greater <heap> > q; inline void add(int x, int y, int z)
{
to[cnt] = y;
val[cnt] = z;
next[cnt] = head[x];
head[x] = cnt++;
} inline void queue_prim()
{
int i, u, v, tot = n;
heap x;
q.push(make_pair(, ));
while(!q.empty() && tot)
{
x = q.top();
q.pop();
u = x.second;
if(vis[u]) continue;
vis[u] = ;
ans += x.first;
tot--;
for(i = head[u]; i != -; i = next[i])
{
v = to[i];
if(!vis[v]) q.push(make_pair(val[i], v));
}
}
} int main()
{
int i, x, y, z;
memset(head, -, sizeof(head));
scanf("%d %d", &n, &m);
for(i = ; i <= m; i++)
{
scanf("%d %d %d", &x, &y, &z);
add(x, y, z);
add(y, x, z);
}
queue_prim();
printf("%d", ans);
return ;
}
最新文章
- Windows程序设计_19_测试Windows应用程序加载函数
- 实现DevExpress GridControl 只有鼠标双击后才进行修改数据
- 高通AR增强现实Unity3D
- rails下react的demo
- MVC 构建图片/文件选择器 参考其它CMS功能
- JavaScript的Ajax请求示例
- G2 DT时代的图形语法 正式发布
- 【WEB前端经验之谈】没有速成,只有不断积累。
- update openssl on redhat/centos
- WMDestroy函数调用inherited,难道是为了调用子类覆盖函数?还有这样调用的?
- ZOJ Problem Set - 3758 素数
- (五)认识Android中的Service
- clone()方法、深复制和浅复制
- 【SmartOS】轻量级多任务调度系统
- 动手试试Android Studio插件开发
- 关于 Be 主
- Golang微服务:Micro Trace使用opentracing jaeger
- void android.graphics.Bitmap.recycle()
- visual studio 2017调试时闪退。
- iOS友盟社会化分享U-Share分享面板不显示的问题(基本配置没有错误)