prim写法 最小生成树
2012-11-30 14:13
417 查看
http://blog.csdn.net/qinaide_lixiaoshuo/article/details/7882355
马上要回家了,复习复习我学习过的知识,
prim写的最小生成树,其实prim和dijkstra是非常相似的,只不过是dijkstra更新的是和而已,,,
所以两个算法很相似,,只不过是吧dis[]=map[][]+dis[] 变成了 dis[]=map[][],当然 同样变化的还有判断条件;
贴出代码:
以下是我的:
马上要回家了,复习复习我学习过的知识,
prim写的最小生成树,其实prim和dijkstra是非常相似的,只不过是dijkstra更新的是和而已,,,
所以两个算法很相似,,只不过是吧dis[]=map[][]+dis[] 变成了 dis[]=map[][],当然 同样变化的还有判断条件;
贴出代码:
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <math.h> #define inf 0x3fffffff int N; int map[105][105]; int visit[105]; int dis[105]; int prim() { for(int i=1;i<=N;i++) dis[i]=inf; dis[1]=0; for(int j=1;j<=N;j++) { int t=inf; int pos; for(int i=1;i<=N;i++) { if(!visit[i]&&t>dis[i]) { t=dis[i]; pos=i; } } visit[pos]=1; for(i=1;i<=N;i++) { if(!visit[i]&&map[pos][i]!=0x3f3f3f3f&&dis[i]>map[pos][i]) { dis[i]=map[pos][i]; } } } int sum=0; for(i=1;i<=N;i++) { sum+=dis[i]; } return sum; } int main() { while(scanf("%d",&N),N) { int M=(N-1)*N>>1; int a,b,val; memset(map,0x3f,sizeof(map)); memset(visit,0,sizeof(visit)); for(int i=1;i<=M;i++) { scanf("%d%d%d",&a,&b,&val); if(map[a][b]>val) { map[a][b]=val; map[b][a]=val; } } int ans=prim(); printf("%d\n",ans); } return 0; }
以下是我的:
#define N 6 #define NUM 6 #define MAX 100 std::string vexs ; int edge ;//边表 int edgenum; int prim(int v) { int visited ; int dist ; for(int i=0;i<N;i++) dist[i]=MAX; for(int i=0;i<N;i++) { if(edge[v][i]<MAX) { dist[i]=edge[v][i]; } visited[i]=0; } visited[v]=1; dist[v]=0; int min;int pos; for(int j=1;j<N;j++) { min=MAX; pos=0; for(int i=0;i<N;i++) { if(visited[i]==0&&dist[i]<min) { min=dist[i]; pos=i; } } visited[pos]=1; //松弛 for(int i=0;i<N;i++) { if(!visited[i]&&edge[pos][i]<dist[i]) { dist[i]=edge[pos][i]; } } } int sum=0; for(int i=0;i<N;i++) sum+=dist[i]; return sum; }
相关文章推荐
- JAVA-prim 最小生成树
- POJ2421 最小生成树/MST(prim)
- hdu1162(最小生成树prim)
- POJ 2253 Frogger (最小生成树.Prim)
- hdoj 1863 畅通工程【最小生成树,kruskal&&prim】
- 15分钟掌握最小生成树普利姆(Prim)算法
- poj 1258 小白算法练习 Agri-Net 最小生成树 prim kruskal
- prim 算法 最小生成 树
- 最小生成树算法(Prim和Kruskal)
- hdu_1233_畅通工程再续_最小生成树_kruscal_prim
- Prim与Kruskal求解带权图的最小生成树C/C++
- 贪心算法之Prim最小生成树
- C++实现矩阵图的遍历·最小生成树(prim,kruskal)·最短路径(Dijkstra,floyd)
- 最小生成树 prim
- POJ 2485 Highways (prim最小生成树)
- hdu 1102 最小生成树prim模板题
- 最小生成树之Prim 和 Kruskal算法
- POJ 3026 Borg Maze(bfs+最小生成树-Prim)
- POJ 1789 Truck History (prim解决最小生成树问题)
- 【prim + kruscal 】 最小生成树模板