堆优化Prim
来源:互联网 发布:局域网控制桌面软件 编辑:程序博客网 时间:2024/06/05 18:32
#include<cstdio>#include<algorithm>#include<cstring>#define maxn 5005using namespace std;int n,m,cst[maxn];struct node{ int to,nxt,w;}e[400005];int fir[maxn],cnt_e;void Node(int u,int v,int w){ e[++cnt_e]=(node){v,fir[u],w},fir[u]=cnt_e; e[++cnt_e]=(node){u,fir[v],w},fir[v]=cnt_e;}int Heap[maxn],Pos[maxn],siz;//Heap[i]为于i位置上点的编号,pos[i]为i号点在Heap中的位置 , 小根堆void swap(int pos1,int pos2){ Heap[pos1]^=Heap[pos2],Heap[pos2]^=Heap[pos1],Heap[pos1]^=Heap[pos2]; Pos[Heap[pos1]]=pos1,Pos[Heap[pos2]]=pos2;}void shift(int pos){ // 往上调整 while(pos>1){ if(cst[Heap[pos]]<cst[Heap[pos>>1]]) swap(pos,pos>>1); else return; pos>>=1; }}void put(int emt){ // 放入元素 Heap[++siz]=emt; //printf("%d",Heap[siz]); Pos[emt]=siz; shift(siz);}void maintain(int pos){ // 向下调整 int nxt; while((nxt=pos<<1)<=siz){ (nxt+1<=siz) && (cst[Heap[nxt]]>cst[Heap[nxt+1]]) && (nxt++); if(cst[Heap[nxt]]>cst[Heap[pos]]) return; swap(pos,nxt); pos=nxt; }}int get(){ int ret=Heap[1]; Heap[1]=Heap[siz--],Pos[Heap[1]]=1; maintain(1); return ret;}int prim(){ memset(cst,127/3,sizeof cst);siz=0; for(int i=1;i<=n;i++) put(i); cst[1]=0; shift(Pos[1]); int Loc,sum=0; for(int i=1;i<=n;i++){ Loc=get(); sum+=cst[Loc]; for(int i=fir[Loc];i;i=e[i].nxt) if(cst[e[i].to]>e[i].w){ cst[e[i].to]=e[i].w; shift(Pos[e[i].to]); } } return sum;}int main(){ int u,v,w; scanf("%d%d",&n,&m); for(int i=1;i<=m;i++) scanf("%d%d%d",&u,&v,&w), Node(u,v,w); printf("%d",prim());}
阅读全文
0 0
- Prim 的堆优化
- Prim堆优化
- 堆优化prim
- prim 堆优化
- 堆优化Prim
- prim算法的堆优化。
- 堆优化的prim算法
- hdu 1233 堆优化prim
- 最小生成树Prim算法 堆优化
- 【模板】Prim+堆优化 最小生成树
- hihocoder-1109-堆优化的prim
- hdu1102之prim(堆优化)解法
- POJ 1789 Prim 向愚蠢的堆优化告别
- UVA 11354 Bond (LCA + MST) (堆优化的Prim)
- hihoCoder_#1109_堆优化的Prim算法
- 基于堆优化的Prim,另附kruskal解法
- 洛谷3366 最小生成树(Prim + 堆优化)
- 最小生成树 堆优化的Prim算法
- MySQL添加外键失败ERROR 1452的解决(数据库添加外键失败)
- 评分卡模型剖析之一(woe、IV、ROC、信息熵)
- 曹可爱之最可爱-Vue.js入门(六)条件渲染
- 口才盛宴丨 CBK第二阶段第一期训练营正式开营
- BZOJ 4311: 向量(线段树分治+凸包+三分)
- 堆优化Prim
- Eclipse J2EE 使用技巧(持续更新)
- 封装的函数
- hibernate报错You have an error in your SQL syntax; ......near 'type=InnoDB' at line 7
- mybatis分页插件pageHelper的使用
- Struts2文件上传
- diff diff3 命令
- 配置文件
- 这些行业将是最有发展前景的!