Prim(各种功能)
来源:互联网 发布:js 屏蔽运营商广告 编辑:程序博客网 时间:2024/06/07 08:24
输出边,输出最小生成树中的最大边以及初始化模板
#include<stdio.h>#define INF 0x3f3f3f3fint mp[2010][2010],dis[2010],book[2010],n;int save[2010];void prim(){ int maxx=-1; for(int i=1;i<=n;i++) { dis[i]=mp[1][i]; save[i]=1; } book[1]=1; int minn,u; for(int i=1;i<=n-1;i++) { //经过松弛更新距离后从非数顶点中选出一个距离生成树最短的点 minn=INF; for(int j=1;j<=n;j++) { if(dis[j]<minn&&book[j]==0) { minn=dis[j]; u=j; } } book[u]=1;//u已经加入生成树,这时生成树已经发生变化 if(minn>maxx) maxx=minn;//记录最长边 printf("%d---%d:%d\n",u,save[u],minn); //松弛,更新每个非树顶点到新的生成树的最短距离dis for(int k=1;k<=n;k++) { if(mp[u][k]<dis[k]&&book[k]==0) { dis[k]=mp[u][k]; save[k]=u;//这时更新完的边在下次选出的点一定是这个点的最短的边 } } } printf("%d\n",maxx);}int main(){ int m; while(~scanf("%d%d",&n,&m)) { for(int i=0;i<=n;i++) { book[i]=0; save[i]=0; dis[i]=INF; for(int j=0;j<=n;j++) { if(i==j) mp[i][j]=0; else mp[i][j]=INF; } } int u,v,w; for(int i=1;i<=m;i++) { scanf("%d%d%d",&u,&v,&w); if(w<mp[u][v]) mp[u][v]=mp[v][u]=w; } prim(); } return 0;}
阅读全文
0 0
- Prim(各种功能)
- 各种功能
- 各种功能 的 存储过程 (一)
- 各种功能 存储过程 (二)
- Android 各种功能解决方案
- UITableViewCell的各种功能
- JFrame各种功能
- JQ 选择器各种功能
- 各种指令功能
- C# 各种克隆功能
- HTML各种小功能
- duilib 各种功能介绍
- Prim算法 (改进)
- hdu1863(prim算法)
- 普里姆(Prim)算法
- poj2349(prim)
- poj_1258(Prim算法)
- POJ_1789(Prim算法)
- 三子棋
- 普及练习场 交叉模拟 税收与补贴问题
- 定积分的基本性质4 绝对可积性
- 程序员面试宝典随笔记(一)--多态性
- 696. Count Binary Substrings
- Prim(各种功能)
- 数据结构实验之查找三:树的种类统计
- 数据结构2
- 24 迭代器分类对算法的影响(学自Boolean)
- MySQL数据库——创建计算字段
- 【TensorFlow】MNIST(代码重构+模型持久化)
- 程序员面试宝典随笔记(一)--动态和静态绑定
- Oracle Profile 使用详解
- Bag of visual words(Bag of Words(BOW)模型)