会员
周边
捐助
新闻
博问
闪存
赞助商
所有博客
当前博客
我的博客
我的园子
账号设置
简洁模式
...
退出登录
注册
登录
奇迹园
OJ解题报告与微软、google面试题
博客园
首页
新随笔
联系
管理
订阅
POJ 1251 最小生成树prim算法
还是最小生成树prim算法,套用的浙大模板
#include <iostream> #define MAXN 28 #define inf 10000 typedef int elem_t; using namespace std; elem_t prim(int n,elem_t mat[MAXN][MAXN],int* pre){ elem_t min[MAXN],ret=0; int v[MAXN],i,j,k; for (i=0;i<n;i++) min[i]=inf,v[i]=0,pre[i]=-1; for (min[j=0]=0;j<n;j++){ for (k=-1,i=0;i<n;i++) if (!v[i]&&(k==-1||min[i]<min[k])) k=i; for (v[k]=1,ret+=min[k],i=0;i<n;i++) if (!v[i]&&mat[k][i]<min[i]) min[i]=mat[pre[i]=k][i]; } return ret; } int main(){ int n,m,i,j,result,q; int pre[MAXN]; int distance[MAXN][MAXN]; char s,e; while(cin>>n,n!=0){ for (i = 0;i < n;i++) for (j = 0;j < n;j++) { distance[i][j] = inf; } for(i = 0;i < n-1;i++){ cin>>s>>m; for(j = 0;j < m;j++){ cin>>e>>q; distance[s -'A'][e -'A'] = distance[e -'A'][s -'A'] = q; } } result = prim(n,distance,pre); cout << result<<endl; } return 0; }
posted @
2011-12-21 00:35
yangleo
阅读(
173
) 评论(
0
)
编辑
收藏
举报
会员力量,点亮园子希望
刷新页面
返回顶部
公告