最小生成树之普里姆(prim)法求最小生成树
2017-10-18 21:01
197 查看
prim
基本思想设G是具有n(u1,u2,u3.....un)个顶点,m个边的连通无向图,T是G的最小生成树, T的初始状态为U={u1},value={}, 记一个数组d[i],,表示当前最小生成树中的顶点到i的最小值; d的初始状态为d[i]=d[1][i];
#include<bits/stdc++.h> using namespace std; int a[10010][10010],d[100010]; int main() { int n,m,i,u,v,w,j,mmin,temp,s=0; cin>>n>>m; for(i=1; i<=n; i++) { for(j=1; j<=n; j++) a[i][j]=1000000000; } for(i=1; i<=m; i++) { cin>>u>>v>>w; a[v][u]=w; a[u][v]=w; } for(i=2; i<=n; i++) d[i]=a[1][i]; // 初始化d数组 for(i=2; i<=n; i++) // 遍历n-1次(向T中加入n-1个点) { mmin=1000000000; temp=0; for(j=2; j<=n; j++) //找出当前 没在T中的点到T的最小距离 { if(d[j]<mmin&&d[j]!=0) { mmin=d[j]; temp=j; } } s+=mmin; d[temp]=0; // 表示点temp在T中 for(j=2; j<=n; j++) { if(a[temp][j]<d[j]) // 改变d数组 { d[j]=a[temp][j]; } } } printf("%d",s); return 0; }
相关文章推荐
- 最小生成树之Prim(普里姆)算法
- 最小生成树之Prim(普里姆)算法
- 算法:图解最小生成树之普里姆(Prim)算法
- 最小生成树之Prim(普里姆)算法
- 数据结构之---C语言实现最小生成树之prim(普里姆)算法
- 算法:图解最小生成树之普里姆(Prim)算法
- 数据结构之---C语言实现最小生成树之prim(普里姆)算法
- 最小生成树之普里姆(Prim)算法
- C++ 最小生成树之Prim(普里姆)算法
- 普里姆(Prim)算法求解最小生成树
- Prim(普里姆)算法求最小生成树
- POJ 2349 Arctic Network(最小生成树之Prim)
- hdu1875 畅通工程再续 (最小生成树之prim 算法)
- hdu1162 Eddy's picture (最小生成树之prim 算法)
- POJ1258Agri-Net (最小生成树之prim)
- 图论中最小生成树算法-Prim(普里姆)算法、kruskal(克鲁斯卡尔避圈法)算法、破圈算法
- 最小生成树prim(普里姆)算法
- 求最小生成树,普里姆(Prim)算法
- hdu1863 畅通工程(最小生成树之prim)
- hdu1863 畅通工程(最小生成树之prim)