最小生成树 prim hdu1233 还是畅通工程
来源:互联网 发布:八国集团中国知乎 编辑:程序博客网 时间:2024/04/30 02:35
c++代码实现
#include<iostream>using namespace std;const int maxnum=105;const int maxint=99999;int map[maxnum][maxnum];int lowcost[maxnum];//记录的是以节点i为终点的最小边权值bool vis[maxnum];//标记已识别的点,相当于起点int dist;//记录最终的权值总和void Prim(int N,int map[maxnum][maxnum]){ //初始化 for(int i=1;i<=N;i++) { lowcost[i]=map[1][i];//以1为最初起点,i为终点的权值 vis[i]=0; } vis[1]=1;//第一个点已被标记 dist=0;//最初权值为0; int u=1; /* n个节点至少需要N-1条边构成最小生成树 */ for(int i=1;i<N;i++) { int temp=maxint; //找到以u为终点的最小权值的边 for(int j=1;j<=N;j++) { if(!vis[j]&&lowcost[j]<temp) { u=j; temp=lowcost[j]; } } //累计权值 dist=dist+temp; //标记节点u到生成树 vis[u]=1; //更新当前节点到其他节点的权值 for(int k=1;k<=N;k++) { //发现更小权值 if(!vis[k]&&map[u][k]<lowcost[k]) lowcost[k]=map[u][k]; } } cout<<dist<<endl;}int main (){ int N;//输入节点 while(cin>>N) { if(N==0) break; int A,B,D;//两个节点,及之间的距离 //初始化节点之间的距离,假设都不相连,无穷大(取无穷大为maxint) for(int i=1;i<=N;i++) for(int j=1;j<=N;j++) map[i][j]=maxint; //输入各个节点之间的距离 for(int i=1;i<=N*(N-1)/2;i++) { cin>>A>>B>>D; if(D<maxint) { map[A][B]=D; map[B][A]=D;//无向图 } } Prim(N,map); } return 0;}
0 0
- hdu1233 还是畅通工程(最小生成树 prim 算法)
- HDU1233 还是畅通工程 【最小生成树Prim】
- 最小生成树 prim hdu1233 还是畅通工程
- hdu1233还是畅通工程 最小生成树(prim或kruskal)
- Hdu1233 - 还是畅通工程 - 最小生成树
- 最小生成树-hdu1233-还是畅通工程
- hdu1233还是畅通工程【最小生成树】
- HDU1233 还是畅通工程 【最小生成树】
- 最小生成树: HDU1233还是畅通工程
- hdu1233 还是畅通工程【最小生成树】
- hdu1233 还是畅通工程 最小生成树 Prim算法堆优化
- hdu1233 还是畅通工程 最小生成树 Prim算法堆优化
- hdu1233 还是畅通工程 ( 最小生成树)
- HDU1233还是畅通工程(最小生成树 Kruskal算法)
- HDU1233--还是畅通工程--最小生成树--并查集
- hdu1233还是畅通工程_最小生成树
- hdu1233 还是畅通工程(最小生成树)
- hdu1233 - 还是畅通工程 (求最小生成树)(Kruskal)
- 水电费电饭锅电饭锅额的体育
- UVA 11205 - The broken pedometer
- 从零开始学android<SeekBar滑动组件.二十二.>
- Spring中Value注解的使用
- 1、C# 全局变量 静态变量
- 最小生成树 prim hdu1233 还是畅通工程
- C++ STL Vector简单讲解
- C++编程->array(数组)
- js中typeof和instanceof的区别
- 点集配准与ICP算法(一)
- linux 下使用SSH 连接远程主机 SCP 拷贝远程文件
- 马士兵struts2视频教程第三十七集
- 2014/8/16
- POJ 1003 Hangover (水题)