生成树模板(Prime + Kruskal)
2016-08-22 15:28
246 查看
//cost[i][j]表示到i,j两点的价值.lowc[i]表示当前状况下点i到集合A的价值 double prim(double cost[][MAXN],int n)//点从0~n-1 { int i,j,p; double minc,res=0; memset(vis,0,sizeof(vis)); vis[0]=1; for(i=1; i<n; i++) lowc[i]=cost[0][i]; for(i=1; i<n; i++) { minc=INF; p=-1; for(j=0; j<n; j++) if(vis[j]==0&&minc>lowc[j]) { minc=lowc[j]; p=j; } if(minc==INF)return -1;//原图不连通 res+=minc; vis[p]=1; for(j=0; j<n; j++) if(vis[j]==0&&lowc[j]>cost[p][j]) lowc[j]=cost[p][j]; } return res; }
int findx(int x) { return p[x] == x ? x : p[x] = findx(p[x]); } long long Kruskal() { long long ans = 0; for(int i = 0; i < n; i ++) p[i] = i; sort(a,a + m); for(int i = 0; i < m; i ++) { int x = findx(a[i].u); int y = findx(a[i].v); if(x != y) { ans += a[i].w; p[x] = y; } } return ans; }
相关文章推荐
- 最小生成树模板(POJ 1258-prime+HDU 1233 Kruskal为例)
- poj 2421 (最小生成树 Prime+kruskal)
- 【模板】Kruskal 最小生成树
- 最小生成树—Kruskal模板
- 【NOIP模板】 最小生成树 kruskal
- hdu1863 畅通工程 Kruskal 和 Prime求最小生成树
- 最小生成树prim+kruskal模板
- 51nod 1212 无向图最小生成树(prim,kruskal模板)
- poj 2349(Prime + Kruskal 最小生成树)
- 自用最小生成树模板(基于Kruskal)
- 练习赛2(补题)问题 G: 建设电力系统【最小生成树kruskal模板题】
- 最小生成树-kruskal 模板
- 模板整理——图论·最小生成树·Kruskal
- 算法提高 最小方差生成树(Kruskal)_模板
- HDOJ 题目1233还是畅通工程(最小生成树,kruskal模板)
- 最小生成树算法(Prime、Kruskal)和最短路径算法(Dijkstra、Floyd)
- C++代码,数据结构-最小生成树的两个算法,Prime&Kruskal
- 最小生成树(Prime/kruskal)
- 最小生成树 :: Prim && Kruskal 模板
- HDU-1879 最小生成树(Kruskal)模板题