Agri-Net--POJ 1258

1、题目类型:图论、最小生成树、Prim算法。

2、解题思路:Prim算法求解最小生成树。

3、注意事项:Prim算法的简单应用。

4、实现方法:

#include<iostream>
#include
<algorithm>
using namespace std;
#define Max 100000

int n,map[101][101];
bool vis[101];

int Prim()
{
int i,j,pos,ans=0,dis[101];
memset(vis,
0,sizeof(vis));

for(i=0;i<n;i++)
dis[i]
=map[0][i];
vis[
0]=1;

for(i=0;i<n-1;i++)
{
pos
=min_element(dis+1,dis+n)-dis;
vis[pos]
=1;
ans
+=dis[pos];
dis[pos]
=Max;

for(j=0;j<n;j++)
if(!vis[j] && dis[j]>map[pos][j])
dis[j]
=map[pos][j];
}
return ans;
}

int main()
{
int i,j,ans;
while(scanf("%d",&n)!=EOF)
{
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf(
"%d",&map[i][j]);
ans
=Prim();
printf(
"%d\n",ans);
}
return 1;
}

 

posted @ 2010-08-10 19:44  勇泽  阅读(149)  评论(0编辑  收藏  举报