prim 算法加模板
来源:互联网 发布:新手淘宝刷手机单步骤 编辑:程序博客网 时间:2024/06/11 09:35
最小生成树的prim算法:
1,在顶点中任取一点,加入集合U中;
2,在集合外的点中找到离集合中的点中最近的点并构成路径,找到的点加入集合中;
3,重复2过程到树构建完毕;
举个栗子:
从1开始,1加入集合U中,2,3,4,在集合外;
选择离集合中点最近的点4,4加入集合中,2,3在集合外;
选择离集合中点最近的点2,2加入集合中,3在集合外;
选择离集合中点最近的点3,3加入集合中,完毕;
测试:
代码:
#include<iostream>#include<cstring>#include<climits>using namespace std;const int M=500;int cost[M][M];int Creat(){int n,m;cin>>n>>m;for(int q=1;q<=n;q++){for(int w=1;w<=n;w++)cost[q][w]=INT_MAX;}int a,b,c;for(int q=1;q<=m;q++){cin>>a>>b>>c;cost[a][b]=c;cost[b][a]=c;}return n;}void prim(int n){int close[M],lowcost[M];for(int q=1;q<=n;q++){close[q]=1;lowcost[q]=cost[1][q];}close[1]=-1;for(int q=1;q<n;q++){int Min=INT_MAX,u=q;for(int w=1;w<=n;w++)if(close[w]!=-1 && lowcost[w]<Min){Min=lowcost[w];u=w;}cout<<"("<<close[u]<<","<<u<<")"<<" "<<lowcost[u]<<endl;for(int w=1;w<=n;w++)if(close[w]!=-1 && lowcost[w]>cost[u][w]){lowcost[w]=cost[u][w];close[w]=u;}}return;}int main() {int t;cin>>t;while(t--){int n=Creat();prim(n);}return 0;}
阅读全文
0 0
- prim 算法加模板
- Prim算法模板
- prim算法模板
- (MST-Prim算法模板)
- prim算法模板
- Prim算法模板
- Prim算法模板
- poj1258 prim算法(模板)
- Prim算法和Kruskal算法模板
- 最小生成树Prim算法模板
- 最小生成树-prim算法模板
- hdu1233最小生成树 prim算法模板
- POJ 2349 (Prim算法模板)
- 最小生成树(prim算法模板)
- prim算法模板—最小生成树
- prim算法模板 (最小生成树)
- 最小生成树-Prim算法(模板)
- 次小生成树模板-prim算法
- D.Yet Another Array queries Problem
- Codeforces Round #438 by Sberbank and Barcelona Bootcamp (Div. 1 + Div. 2 combined)
- 小白教程——Windows下用PHP写一个简单的登录注册页面(一)
- F. Almost Permutation
- python 通过对索引 取反 获得中位数
- prim 算法加模板
- Android 5.X 新特性详解(四)Material Design动画效果
- 自定义ViewPager的指示器标签---让指示器下划线和文字对齐
- SQL server 2005安装教程
- MATLAB中meshgrid函数用法
- Python之网络爬虫学习笔记
- Java 入门笔记
- git命令大全
- python自动化工具之pywinauto(三)