HDOJ1233 还是畅通工程(最小生成树,prim算法)
来源:互联网 发布:c webservice json 编辑:程序博客网 时间:2024/06/05 15:33
HDOJ1233
题意分析
首先给出n,代表村庄的个数
然后出n*(n-1)/2个信息,每个信息包括村庄的起点,终点,距离,
要求求出最小生成树的权值之和。
注意村庄的编号从1开始即可
直接跑prim
#include<iostream>#include<stdio.h>#include<string.h>using namespace std;#define maxn 101#define inf 0x3f3f3fint map[maxn][maxn];int d[maxn],vis[maxn];int n,m;//prim算法构造最小生成树int prim(){ int i,j,mi,v,ans=0; for(i=1;i<=n;i++){ d[i]=map[1][i]; //d[i]表示源点到其他点的距离(这里源点为点1) vis[i]=0; } vis[1]=1; for(i=1;i<n;i++){ //将集合内的顶点与集合外的顶点所构成的所有边中选取权值最小的一条边 //作为生成树的边,并将集合外的那个顶点加入到集合中 mi=inf; for(j=1;j<=n;j++) if(!vis[j]&&d[j]<mi){ mi=d[j]; v=j; } vis[v]=1; ans+=d[v]; /*用集合内的顶点与集合外的顶点构成的边中找最小的边, 并将相应的顶点加入集合中 如此下去直到全部顶点都加入到集合中,即得最小生成树.*/ for(j=1;j<=n;j++) if(!vis[j]&&d[j]>map[v][j]) d[j]=map[v][j]; } return ans;}int main(){ int i,p1,p2,t; while(cin>>n&&n){ memset(map,inf,sizeof(map)); int m=n*(n-1)/2; for(i=1;i<=m;i++){ scanf("%d%d%d",&p1,&p2,&t); map[p1][p2]=map[p2][p1]=t; } cout<<prim()<<endl; } return 0;}
阅读全文
0 0
- HDOJ1233 还是畅通工程(最小生成树,prim算法)
- hdu1233 还是畅通工程(最小生成树 prim 算法)
- hud1233还是畅通工程并 最小生成树 Prim算法
- HDOJ1233. 还是畅通工程(并查集+最小生成树)
- hdu 1233 还是畅通工程 最小生成树(prim算法 + kruskal算法)
- HDU 1233 还是畅通工程【最小生成树入门题,Kruskal算法+Prim算法】
- HDU 1233 还是畅通工程 最小生成树Kruskal算法和prim算法
- hdu 还是畅通工程 (基础)(最小生成树)(Prim算法 && Kruskal算法)
- hdu 1233 还是畅通工程(Prim最小生成树)
- hdu 1233 还是畅通工程--最小生成树prim
- HDU 1233 还是畅通工程---prim求最小生成树
- Hud 1233 还是畅通工程[最小生成树Prim]
- HDU1233 还是畅通工程 【最小生成树Prim】
- HDOJ 1233 还是畅通工程 【最小生成树】+【prim】
- 最小生成树 prim hdu1233 还是畅通工程
- hdu 1233 还是畅通工程(最小生成树prim)
- hdoj 1233 还是畅通工程【最小生成树 kruskal && prim】
- HDOJ 1233 还是畅通工程 最小生成树 kruskal && prim
- 关于printf("%d",A)与printf("%02d",A) 类型的printf的格式修饰符
- tensorboard的可视化及模型可视化
- 主成分分析
- STM32笔记:RCC结构与配置流程
- 如何判断Activity是否在前台显示
- HDOJ1233 还是畅通工程(最小生成树,prim算法)
- sourceInsight4 破解笔记(完美破解)
- [Leetcode] 358. Rearrange String k Distance Apart 解题报告
- linux下安装PHP pcntl 扩展
- Bad Hair Day (单调栈)
- 微信小程序中使用富文本
- [python3.6 flask web学习]Flask项目目录结构
- android开发中Fingerprint模块浅析
- java的volatile关键字(笔记)