hiho刷题日记——第二十六天最小生成树一·Prim算法
2015-12-01 15:19
381 查看
题目
用Prim算法做最小生成树思路
从1开始。将1加入已连接的点。找到(可以连接到已连接的点)的权值最小的边。
将其的另一端点加入已连接的点。重复到结束。
我这里用了一个d[i]来存储到 i 最小的权值。
代码
#include<cstdio> #include<cstring> using namespace std; const int MAXN=1000+1; int N,g[MAXN][MAXN],vis[MAXN],d[MAXN],k; int prim() { int ans=0; memset(vis,0,sizeof(vis)); d[0]=100000; for(int i=1;i<=N;i++) d[i]=g[1][i]; vis[1]=1; for(int i=1;i<N;i++) { k=0; for(int j=2;j<=N;j++) if(!vis[j] && d[j]<d[k]) k=j; vis[k]=1; ans+=d[k]; for(int j=2;j<=N;j++) if(!vis[j] && g[k][j]<d[j]) d[j]=g[k][j]; } return ans; } int main() { scanf("%d",&N); for(int i=1;i<=N;i++) for(int j=1;j<=N;j++) scanf("%d",&g[i][j]); printf("%d",prim()); return 0; }
相关文章推荐
- hiho刷题日记——第二十七天最小生成树二·Kruscal算法
- UINavigationController技巧<一>——修改返回按钮的标题
- Linux系统安装VMware Tools
- Qt 创建状态栏
- android 广播更新界面
- Java读书笔记十六(Java中的枚举类)
- 助你美化网站的实用css3技巧(1)
- Android 关于Scrollview和listview嵌套以及下拉刷新问题(附源码)
- Sql Server 语句大全
- XML字符转译
- VS快速生成JSON数据格式对应的实体
- js实现继承的5种方式
- mongodb常用基本管理命令
- linux启动oracle数据库
- java用jdbc连接neo4j
- 电影
- 设置UITableView中Cell的间隔线从0点开始
- 如何修改 UINavigationController、UINavigationBar 中 navigationItem 左侧 “返回” 按钮的名称
- Linux rpm 命令参数使用详解[介绍和应用]
- mongdb 副本集