最小生成树模板(Prim+优先队列)
2012-05-11 10:48
344 查看
const int INF = 0xfffffff; const int M = 1005; Graph<M,M*M> g; int Dis[M]; bool Vist[M]; struct Node{ Node(){} Node(int Len, int Ind):len(Len),ind(Ind){} int len,ind; bool operator<(const Node& node) const{ return len > node.len; } }; int Prim(int s, int n) { fill(Dis,Dis+M,INF); int result = 0; priority_queue<Node> Q; CLR(Vist,false); Dis[s] = 0; struct Node cur; Q.push(Node(0,s)); while(!Q.empty()) { cur = Q.top(); Q.pop(); if(cur.len != Dis[ cur.ind ]) continue; Vist[ cur.ind ] = true; result += cur.len; for(int i = g.H[ cur.ind ]; i != -1; i = g.Next[i]) { if(!Vist[ g.Num[i] ] && g.Len[i] < Dis[ g.Num[i] ]) { Dis[ g.Num[i] ] = g.Len[i]; Q.push(Node(Dis[ g.Num[i] ],g.Num[i])); } } } return result; }须加邻接表模板,头文件queue.h,宏定义#define CLR(arr,v) memset(arr,v,sizeof(arr))
相关文章推荐
- 最小生成树Prim模板
- 【2018寒假集训Day 8】【最小生成树】Prim和Kruskal算法模板
- HDU1102-Constructing Roads-最小生成树(prim模板题)
- Agri-Net(最小生成树模板 prim)
- poj 1258 Agri-Net ( 最小生成树[模板题]--prim )
- 【prim + kruscal 】 最小生成树模板
- poj 2485 <prim《模板》求最小生成树>
- 最小生成树(Prim模板)
- poj 1258 【最小生成树】【prim】【纯模板】
- poj1258 Agri-Net 最小生成树 prim kruskal 模板
- H - Agri-Net POJ - 1258 prim(最小生成树)模板
- 最小生成树prim+kruskal模板
- POJ 1258:Agri-Net Prim最小生成树模板题
- 模板--最小生成树【prim】
- [kuangbin带你飞]专题六 最小生成树 (prim)(kruskal)(模板)
- hdu 1863 畅通工程 最小生成树模板入门题 prim+kruskal两种算法AC。
- HDU 1223 还是畅通工程(最小生成树prim模板)
- hdu 1102 最小生成树prim模板题
- POJ 1258:Agri-Net Prim最小生成树模板题
- 最小生成树prim模板