问题链接:HDU1233 还是畅通工程。

问题描述:参见上述链接。

问题分析:这是一个最小生成树的为问题,解决的算法有Kruskal(克鲁斯卡尔)算法和Prim(普里姆)算法。

程序说明:本程序使用Kruskal算法实现。有关最小生成树的问题,使用克鲁斯卡尔算法更具有优势,只需要对所有的边进行排序后处理一遍即可。程序中使用了并查集,用来判定加入一条边后会不会产生循环。程序中,图采用边列表的方式存储,按边的权从小到大顺序放在优先队列中,省去了排序。

需要注意的是,优先队列申明的位置,以及它和结束条件(“count == n - 1”)的配合。对于每一个测试用例,开始是优先队列应该是空的。

AC的C++语言程序如下:

/* HDU1233 还是畅通工程 */#include <iostream>
#include <queue>
#include <cstdio>using namespace std;const int MAXN = 100;// 并查集
int v[MAXN+1];
class UF {int length;
public:UF() {}// 压缩int Find(int x) {if(x == v[x])return x;elsereturn v[x] = Find(v[x]);}bool Union(int x, int y) {x = Find(x);y = Find(y);if(x == y)return false;else {v[x] = y;return true;}}// 唯一树根判定连通性bool isconnect() {int root = -1;for( int i=1 ; i<=length ; i++ )if(root == -1)root = Find(i);elseif(Find(i) != root)return false;return true;}void reset(int n) {length = n;for(int i=0; i<=n; i++)v[i] = i;}
};struct edge {int src, dest, cost;bool operator < (const edge& n) const {return cost > n.cost;}
};int main()
{UF uf;edge e;int n, m;while(scanf("%d", &n) != EOF && n) {priority_queue<edge> q;     // 优先队列,用于存储边列表uf.reset(n);m = n * (n-1) / 2;// 构建优先队列while(m--) {scanf("%d%d%d", &e.src, &e.dest, &e.cost);q.push(e);}// Kruskal算法:获得最小生成树int ans=0, count=0;while(!q.empty()) {e = q.top();q.pop();if(uf.Union(e.src, e.dest)) {count++;ans += e.cost;}if(count == n - 1)break;}// 结果printf("%d\n", ans);}return 0;
}

转载于:https://www.cnblogs.com/tigerisland/p/7564089.html

HDU1233 还是畅通工程相关推荐

  1. HDU1233 还是畅通工程【Kruskal算法+并查集】

    还是畅通工程 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  2. 最小生成树(hdu1233还是畅通工程)

    /* 微软招聘信息(主要针对已经有工作经验的)还是畅通工程 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Ja ...

  3. 还是畅通工程(HDU-1233)

    Problem Description 某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离.省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直 ...

  4. Hdu1233 最小生成树_还是畅通工程

    某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离.省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通 (但不一定有直接的公路相连,只要能间接通过公路可达即 ...

  5. HDU-1863 畅通工程

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

  6. [kuangbin带你飞]专题六 最小生成树 L - 还是畅通工程 (简单最小生成树)

    L - 还是畅通工程 题目链接:https://vjudge.net/contest/66965#problem/L 题目: 某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离.省政府&qu ...

  7. 并查集 HDOJ 1232 畅通工程

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

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

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

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

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

最新文章

  1. excel xml mysql_数据库表转换为xml格式,excel转换为xml格式文件
  2. 2010年高教社杯全国大学生数学建模竞赛题目B题解析及层次分析法AHP在其中的应用
  3. android 查看多个图片,android提取视频多张图片和视频信息
  4. iphone如何分屏_苹果手机如何操作分屏 苹果手机录屏没有声音这么做轻松解决...
  5. 设计模式在实际业务应用中的介绍之3——外观或门面模式Facade对AOP装配业务工厂的应用...
  6. [16]manjaro安装nvidia驱动
  7. redhat7.3 superset的离线安装
  8. Svn下载及安装(附带汉化包安装)
  9. VS2017使用C#编写COM组件
  10. java 图片压缩 base64,图片的尺寸 大小压缩 和转化为base64
  11. 基于似然比检验统计量的异常轨迹检测
  12. android u盘怎么打开文件夹图标不显示不出来了,U盘图标显示不正常怎么办,U盘图标怎么显示出来...
  13. 《和平精英》新模式,玩法竟跟《使命召唤》和《王牌战士》类似?
  14. MQL5:zig-zag 指标
  15. Win10打包tar.gz文件,Win10使用tar命令,Win10使用linux基本命令
  16. n1盒子openwrt某个容器无法启动 启动直接死机
  17. vivo计算机隐藏游戏,vivoX30功能使用教程 隐藏游戏图标不让孩子发现
  18. MySQL经典四表查询(教师,学生,成绩,课程表)多表查询
  19. 机器学习 —— 概率图模型(学习:对数线性模型)
  20. 面向初学者程序员的五门Udemy 课程。

热门文章

  1. 机器学习实战7-sklearn集成学习和随机森林
  2. 7-33 出生年 (15 分)
  3. 使用函数输出水仙花数
  4. 狂野飙车9手游服务器维护,狂野飙车9_狂野飙车9公益服_变态版狂野飙车9_狂野飙车9官网_9917游戏...
  5. jquery.treeview.js php mysql,jquery.treeview应用
  6. MySQL常用存储引擎
  7. response.setcontenttype的參数
  8. 实验二:编写输出Hello World!
  9. 微信小程序获取当前地址以及选择地址详解 地点标记
  10. [翻译] 编写高性能 .NET 代码--第二章 GC -- 配置选项