hdu1863 畅通工程---MST连通
题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=1863
题目大意:
中文题,求MST权值,如果不连通,输出?
解题思路:
这道题帮我找出了之前模板中的一点小问题。
原来prim模板是迭代n次,实际是只需要迭代n-1次就求出了MST,由于有一个条件判断,所以迭代n次也无所谓。这道题在prim模板上加上判断连通的操作,如果某一次找不到为加入MST的最小边,说明图不连通。所以此处只能迭代n-1次,多迭代的话,会造成错误判断。
1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 const int maxn = 100 + 10; 5 const int INF = 0x3f3f3f3f; 6 int Map[maxn][maxn]; 7 int lowcost[maxn], mst[maxn]; 8 int n, m; 9 ll prim(int u) 10 { 11 ll ans = 0; 12 for(int i = 1; i <= n; i++) 13 { 14 lowcost[i] = Map[u][i]; 15 mst[i] = u; 16 } 17 mst[u] = -1; 18 for(int i = 1; i < n; i++) 19 { 20 int minn = INF; 21 int v = -1; 22 //寻找lowcost数组里面的未加入mst的最小值 23 for(int j = 1; j <= n; j++) 24 { 25 if(mst[j] != -1 && lowcost[j] < minn) 26 { 27 v = j; 28 minn = lowcost[j]; 29 } 30 } 31 if(v != -1) 32 { 33 mst[v] = -1; 34 ans += lowcost[v]; 35 for(int j = 1; j <= n; j++) 36 { 37 if(mst[j] != -1 && lowcost[j] > Map[v][j]) 38 { 39 lowcost[j] = Map[v][j]; 40 mst[j] = v; 41 } 42 } 43 } 44 else return 0;//没有找到,说明不连通 45 } 46 return ans; 47 } 48 int main() 49 { 50 while(scanf("%d%d", &m, &n) != EOF && m) 51 { 52 int u, v, w; 53 memset(Map, INF, sizeof(Map)); 54 memset(lowcost, 0, sizeof(lowcost)); 55 while(m--) 56 { 57 scanf("%d%d%d", &u, &v, &w); 58 Map[u][v] = Map[v][u] = w; 59 } 60 ll ans = prim(1); 61 if(ans)cout<<ans<<endl; 62 else cout<<"?"<<endl; 63 } 64 return 0; 65 }
转载于:https://www.cnblogs.com/fzl194/p/8899955.html
hdu1863 畅通工程---MST连通相关推荐
- HDU-1863 畅通工程
HDU-1863 畅通工程 题目链接:添加链接描述 **思路:**基本类似HDU-1233添加链接描述,增加一个变量c记录已合并的城镇数,若还存在城镇未连通则输出"?". #inc ...
- HDU1863 畅通工程【Kruskal算法+并查集】
畅通工程 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- HDU - 1232 畅通工程 【连通块】
Description 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府"畅通工程"的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接 ...
- 并查集 HDOJ 1232 畅通工程
题目传送门 1 /* 2 并查集(Union-Find)裸题 3 并查集三个函数:初始化Init,寻找根节点Find,连通Union 4 考察:连通边数问题 5 */ 6 #include <c ...
- 畅通工程//最小生成树prim
题目: 畅通工程 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total S ...
- 【1863】畅通工程 (HDU)
畅通工程 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Su ...
- Kruskal HDOJ 1233 还是畅通工程
题目传送门 1 /* 2 最小生成树之kruskal算法--并查集(数据结构)实现 3 建立一个结构体,记录两点和它们的距离,依照距离升序排序 4 不连通就累加距离,即为最小生成树的长度 5 */ 6 ...
- hdu1879 继续畅通工程 最小生成树
继续畅通工程 此题明显属于最小生成树的题目 关于最小生成树,有两种方法,一种是Kruskal方法,一种是Prim算法,第一种用并查集即可实现 1 /* 2 hdu1879 3 2013-03-18 1 ...
- 题目1012:畅通工程
/*********************************** 题目描述: 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府"畅通工程&quo ...
最新文章
- Android之线程安全的单例模式,Adapter注意事项之引用传值
- [BZOJ 2523][Ctsc2001]聪明的学生(递归)
- iOS仿抖音节拍界面、Swift,MVVM架构完整项目、日历demo、滚动切换分类等源码
- linux shell $# $* $@ $?
- 《Redis 设计与实现》读书笔记-Redis 对象
- 信息学奥赛一本通(1029:计算浮点数相除的余)
- 怎么保存在界面输入的内容_还在担心忘记密码?使用这款软件轻松找回浏览器中保存的密码...
- Django项目:CMDB(服务器硬件资产自动采集系统)--11--07CMDB文件模式测试采集硬件数据...
- 通俗易懂的MonteCarlo积分方法(七)
- 千万要避免的五种程序注释方式
- mysql key value_【mysql】大量的 key = value 值用什么方式存储?
- 语音识别(html5+nodejs)
- 常用回归评价指标:均方误差(MSE)、均方根误差(RMSE)、平均绝对误差(MAE)、平均百分比误差(MAPE)、绝对系数R2
- 计算机上u盘打不开,u盘在电脑上打不开怎么解决
- “人类高质量数据”如何训练计算机视觉模型?
- 虚拟机去虚拟化教程,过游戏检测,不全你打我
- 使用Unity的AR Foundation导出到安卓时出现黑屏问题的可能原因
- 打包微服务前后端分离项目并部署到服务器 --- 分布式 Spring Cloud + 页面渲染 Nuxt.js
- word文档中的毕业论文的页眉与页脚设置
- 【数据库02】==== 表的增删改查(基础)