最小生成树算法 prim算法
来源:互联网 发布:淘宝一千保证金怎么退 编辑:程序博客网 时间:2024/06/10 20:51
最小生成树是数据结构中图的一种重要应用,它的要求是从一个带权无向完全图中选择n-1条边并使这个图仍然连通(也即得到了一棵生成树),
同时还要考虑使树的权最小。 prim算法就是一种最小生成树算法。
普里姆算法的基本思想:
从连通网N={V,E}中的某一顶点U0出发,选择与它关联的具有最小权值的边(U0,v),将其顶点加入到生成树的顶点集合U中。以后每一步从一个顶点在U中,而另一个顶点不在U中的各条边中选择权值最小的边(u,v),把它的顶点加入到集合U中。如此继续下去,直到网中的所有顶点都加入到生成树顶点集合U中为止。
下面举例说明下prim算法:
例题:poj 2485
#include <iostream> using namespace std; #define INF 70000 int N;//点的数目 int key[500]; bool flag[500]; int A[500][500]; int Prim(int r) { int result=0; for(int i=0;i<N;i++) { key[i]=INF; flag[i]=true; } key[r]=0; for(int i=0;i<N;i++) { int min_num=INF; int min; for(int j=0;j<N;j++) { if(flag[j] && min_num>key[j]) { min_num=key[j]; min=j; } } flag[min]=false; if(result<key[min]) result=key[min]; for(int j=0;j<N;j++) { if(flag[j] && A[min][j] < key[j]) key[j]=A[min][j]; } } return result; } int main() { int T; cin >> T; while(T--) { cin >> N; for(int i=0;i<N;i++) { for(int j=0;j<N;j++) scanf("%d",&A[i][j]); } cout << Prim(0) << endl; } }
0 0
- Prim最小生成树算法
- 最小生成树Prim算法
- 最小生成树Prim算法
- 最小生成树----Prim算法
- 最小生成树Prim算法
- Prim 最小生成树算法
- 最小生成树:Prim算法
- Prim算法 ----最小生成树
- 最小生成树-prim 算法
- 最小生成树(prim算法)
- 最小生成树 prim算法
- 最小生成树 prim算法
- Prim最小生成树算法
- 最小生成树prim算法
- 最小生成树--prim算法
- 最小生成树Prim算法
- 最小生成树(Prim算法)
- 最小生成树----Prim算法
- 查看一个变量的类型
- Mac OS X 10.9 安装 rails
- crm2011查询审核记录
- 主语从句
- 免费安全软件
- 最小生成树算法 prim算法
- POJ1862_Network(最小生成树)
- 员工管理系统
- android全屏设置
- 【机器学习】HMM算法
- C++中的引用和const
- SpringIOC
- 单片机的几种IO口配置
- Java的priorityQueue