最小生成树之PRIM-O(n^2)
2015-08-13 12:03
295 查看
#include<stdio.h> #include<string.h> #include<stdlib.h> const int maxn=1010,maxm=10010,INF=1000000000; int a[maxn][maxn],d[maxn],p[maxn]; int main(){ #ifndef ONLINE_JUDGE freopen("prim.in","r",stdin); freopen("prim.out","w",stdout); #endif int i,j,k,m,n,s; int x,y,w,ans=0,min; scanf("%d%d",&n,&m); for(i=1;i<=n;i++)d[i]=INF; for(i=1;i<=m;i++){ scanf("%d%d%d",&x,&y,&w); a[x][y]=w; a[y][x]=w; } d[1]=0; for(i=1;i<=n;i++){ min=INF; for(j=1;j<=n;j++) if(!p[j] && d[j]<min){ min=d[j]; k=j; } p[k]=1; ans+=d[k]; for(j=1;j<=n;j++) if(a[k][j] && d[j]>a[k][j]) d[j]=a[k][j]; } printf("%d\n",ans); return 0; }
相关文章推荐
- poj解题报告——2425
- ViewHolder到底用什么修饰?static?final?static final?
- <Stealth>游戏中的动画与寻路控制
- 闪电特效算法
- Spark Graphx 构建graph和aggregateMessages聚合消息
- 工具:七牛云备份VPS服务器文件
- Clementine 12.0 的使用安装(数据挖掘)
- 让整个网站变成灰色的做法
- 黑马程序员——OC笔记之购票系统应用实践
- 乐点 Android SDK 积分墙开发者文档
- 360启用1700W美元收购的新域名360.com
- Fixing the Great Wall
- 用十进制计算30!(30的阶乘),将结果转化成3进制进行表示的话,该进制下的结果末尾会有多少个0?
- 记实现一个功能
- [即时通讯]openfire启动失败解决办法
- 人民币贬值不是大问题
- WSAAsyncSelect模型中,FD_WRITE事件什么时候触发?
- swirl 10: lapply and sapply
- c++线程池
- PHPthinking编程工具正式版发布