最小生成树prim算法实现
2016-08-03 10:22
288 查看
#include <stdio.h>
#include <string.h>
#define MaxInt 0x3f3f3f3f
#define N 110
//创建map二维数组储存图表,low数组记录每2个点间最小权值,visited数组标记某点是否已访问
int map
,low
,visited
;
int n;
int prim()
{
int i,j,pos,min,result=0;
memset(visited,0,sizeof(visited));
//从某点开始,分别标记和记录该点
visited[1]=1;pos=1;
//第一次给low数组赋值
for(i=1;i<=n;i++)
if(i!=pos) low[i]=map[pos][i];
//再运行n-1次
for(i=1;i<n;i++)
{
//找出最小权值并记录位置
min=MaxInt;
for(j=1;j<=n;j++)
if(visited[j]==0&&min>low[j])
{
min=low[j];pos=j;
}
//最小权值累加
result+=min;
//标记该点
visited[pos]=1;
//更新权值
for(j=1;j<=n;j++)
if(visited[j]==0&&low[j]>map[pos][j])
low[j]=map[pos][j];
}
return result;
}
int main()
{
int i,v,j,ans;
while(scanf("%d",&n)!=EOF)
{
//所有权值初始化为最大
memset(map,MaxInt,sizeof(map));
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
scanf("%d",&v);
map[i][j]=map[i][j]=v;
}
ans=prim();
printf("%d\n",ans);
}
return 0;
}
那么简单知识点,为啥都写得那么复杂
#include <string.h>
#define MaxInt 0x3f3f3f3f
#define N 110
//创建map二维数组储存图表,low数组记录每2个点间最小权值,visited数组标记某点是否已访问
int map
,low
,visited
;
int n;
int prim()
{
int i,j,pos,min,result=0;
memset(visited,0,sizeof(visited));
//从某点开始,分别标记和记录该点
visited[1]=1;pos=1;
//第一次给low数组赋值
for(i=1;i<=n;i++)
if(i!=pos) low[i]=map[pos][i];
//再运行n-1次
for(i=1;i<n;i++)
{
//找出最小权值并记录位置
min=MaxInt;
for(j=1;j<=n;j++)
if(visited[j]==0&&min>low[j])
{
min=low[j];pos=j;
}
//最小权值累加
result+=min;
//标记该点
visited[pos]=1;
//更新权值
for(j=1;j<=n;j++)
if(visited[j]==0&&low[j]>map[pos][j])
low[j]=map[pos][j];
}
return result;
}
int main()
{
int i,v,j,ans;
while(scanf("%d",&n)!=EOF)
{
//所有权值初始化为最大
memset(map,MaxInt,sizeof(map));
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
scanf("%d",&v);
map[i][j]=map[i][j]=v;
}
ans=prim();
printf("%d\n",ans);
}
return 0;
}
那么简单知识点,为啥都写得那么复杂
相关文章推荐
- 最小生成树 Prim算法的实现及应用
- Prim算法实现最小生成树MST
- (转)最小生成树prim算法实现
- 最小生成树(prim算法,Kruskal算法)c++实现
- 图的最小生成树:Prim算法实现
- 无向图的最小生成树算法的C程序实现代码(Prim算法)
- 最小生成树的Prim算法和Kruskal算法java代码实现
- 最小生成树prim算法实现及1233解题思路
- 我对Prim算法用于求无向图的最小生成树的理解 (C++实现)
- poj1258--最小生成树prim算法实现
- 最小生成树prim算法实现
- 用于最小生成树的Prim算法实现
- prim算法构造最小生成树(邻接表和数组两种存储方式实现)
- 算法java实现--贪心算法--最小生成树问题--Prim算法
- 最小生成树问题中Kruskal算法和Prim算法的C语言实现
- zoj2048//POJ 1751 最小生成树Prim算法实现
- 最小生成树Prim算法实现
- Prim算法实现最小生成树(图模型+小根堆)
- 最小生成树——prim算法实现
- 图的最小生成树:Prim算法实现