题目链接:

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连通相关推荐

  1. HDU-1863 畅通工程

    HDU-1863 畅通工程 题目链接:添加链接描述 **思路:**基本类似HDU-1233添加链接描述,增加一个变量c记录已合并的城镇数,若还存在城镇未连通则输出"?". #inc ...

  2. HDU1863 畅通工程【Kruskal算法+并查集】

    畅通工程 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  3. HDU - 1232 畅通工程 【连通块】

    Description 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府"畅通工程"的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接 ...

  4. 并查集 HDOJ 1232 畅通工程

    题目传送门 1 /* 2 并查集(Union-Find)裸题 3 并查集三个函数:初始化Init,寻找根节点Find,连通Union 4 考察:连通边数问题 5 */ 6 #include <c ...

  5. 畅通工程//最小生成树prim

    题目: 畅通工程 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total S ...

  6. 【1863】畅通工程 (HDU)

     畅通工程 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Su ...

  7. Kruskal HDOJ 1233 还是畅通工程

    题目传送门 1 /* 2 最小生成树之kruskal算法--并查集(数据结构)实现 3 建立一个结构体,记录两点和它们的距离,依照距离升序排序 4 不连通就累加距离,即为最小生成树的长度 5 */ 6 ...

  8. hdu1879 继续畅通工程 最小生成树

    继续畅通工程 此题明显属于最小生成树的题目 关于最小生成树,有两种方法,一种是Kruskal方法,一种是Prim算法,第一种用并查集即可实现 1 /* 2 hdu1879 3 2013-03-18 1 ...

  9. 题目1012:畅通工程

    /*********************************** 题目描述: 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府"畅通工程&quo ...

最新文章

  1. Android之线程安全的单例模式,Adapter注意事项之引用传值
  2. [BZOJ 2523][Ctsc2001]聪明的学生(递归)
  3. iOS仿抖音节拍界面、Swift,MVVM架构完整项目、日历demo、滚动切换分类等源码
  4. linux shell $# $* $@ $?
  5. 《Redis 设计与实现》读书笔记-Redis 对象
  6. 信息学奥赛一本通(1029:计算浮点数相除的余)
  7. 怎么保存在界面输入的内容_还在担心忘记密码?使用这款软件轻松找回浏览器中保存的密码...
  8. Django项目:CMDB(服务器硬件资产自动采集系统)--11--07CMDB文件模式测试采集硬件数据...
  9. 通俗易懂的MonteCarlo积分方法(七)
  10. 千万要避免的五种程序注释方式
  11. mysql key value_【mysql】大量的 key = value 值用什么方式存储?
  12. 语音识别(html5+nodejs)
  13. 常用回归评价指标:均方误差(MSE)、均方根误差(RMSE)、平均绝对误差(MAE)、平均百分比误差(MAPE)、绝对系数R2
  14. 计算机上u盘打不开,u盘在电脑上打不开怎么解决
  15. “人类高质量数据”如何训练计算机视觉模型?
  16. 虚拟机去虚拟化教程,过游戏检测,不全你打我
  17. 使用Unity的AR Foundation导出到安卓时出现黑屏问题的可能原因
  18. 打包微服务前后端分离项目并部署到服务器 --- 分布式 Spring Cloud + 页面渲染 Nuxt.js
  19. word文档中的毕业论文的页眉与页脚设置
  20. 【数据库02】==== 表的增删改查(基础)

热门文章

  1. Datawindow.net 子数据窗口出错
  2. safair浏览器页面局部滑动问题
  3. Lucene+Tika 文件索引的创建与搜索
  4. Xbox One:微软商店中都是Xbox One的主题
  5. php查找函数所在文件
  6. 有多少可爱IT精英,他们的爱情屡屡“挨踢”
  7. 得到windows系统图标的解决方案(转)
  8. Tech.Ed 2006 博客园兄弟聚会
  9. linux学习:文件属性(一)—— inode
  10. win10 rabbitMQ的安装与测试