博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU - 1233 还是畅通工程(Kruskal - MST)
阅读量:6463 次
发布时间:2019-06-23

本文共 1574 字,大约阅读时间需要 5 分钟。

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1233

 

#include 
#include
#include
#include
#define MAXN 105#define MAXM 10000using namespace std;/**************************************************************************************************** 题意:给出城市中任意两个村庄的编号和距离,修一条公路使所有村庄联通,求最小的公路总长度 思路: 1,最小生成树算法,用 Kruskal算法 2,利用并查集维护每个联通集合 3,好好理解算法 PS:模板在邝斌的基础上做了修改,更加便于理解****************************************************************************************************/int F[MAXN]; //并查集维护联通集合struct Node{ int x,y,v;}node[MAXM];bool cmp(Node x,Node y){ return x.v < y.v;}int Find(int x){ //找到每个点的父亲结点。(因为树的形状不重要,因此遍历之后将遍历过的结点改为树根的子结点) if(F[x] == -1) return x; else return F[x] = Find(F[x]);}int Kruskal(int n){ int tol = (n*(n-1))/2; //由点数确定边数 memset(F,-1,sizeof(F)); sort(node+1,node+tol+1,cmp); //将边排序后从小到大加入集合 int cnt = 0,ans = 0; for(int i = 1;i <= tol;i ++){ int t1 = Find(node[i].x),t2 = Find(node[i].y); if(t1 != t2){ ans += node[i].v; F[t1] = t2; cnt++; } if(cnt == n-1) break; } if(cnt < n-1) return -1; else return ans;}int main(){ int n; while(cin>>n,n != 0){ int x,y,v; for(int i = 1;i <= (n*(n-1))/2;i ++) scanf("%d%d%d",&node[i].x,&node[i].y,&node[i].v); int ans = Kruskal(n); cout<
<

 

转载于:https://www.cnblogs.com/Jstyle-continue/p/6351959.html

你可能感兴趣的文章
php等差数列,【教案】高中数学-《等差数列》详案展示
查看>>
php脚手架,thinkphp集成前端脚手架Vue-cli的教程图解
查看>>
php多维数组算法,PHP多维数组算法?
查看>>
flash as3与后台php交互用户注册例子,Flash AS3与后台通讯 PHP版
查看>>
php对大小写敏感,PHP大小写敏感规则
查看>>
java pkcs10,话说 类加载过程 第一篇
查看>>
matlab中如何使用help,MATLAB中如何使用help?怎样看matlab的help
查看>>
matlab的函数的代码,10 Matlab 函数与代码风格
查看>>
php日期语言,Php多语言日期:howto?
查看>>
php前台ajax商品遍历,jquery ajax加载数据前台渲染方式 不用for遍历的方法
查看>>
php openapi设计,OpenApi开放平台架构实践
查看>>
java 基本程序,基础 JAVA程序
查看>>
matlab中求解不等式的解,大神们,求个解多元一次不等式的代码,要所有整数解...
查看>>
php的算法是什么,算法是什么?
查看>>
discuz login.php,Discuz!登录,注册,退出接口.
查看>>
matlab 荷兰颜色,insar_matlab 荷兰Delft大学开发的insar(干涉合成孔径雷达)图像处理部分源代码 - 下载 - 搜珍网...
查看>>
Unix php平滑安装扩展,Linux下安装php的扩展scws
查看>>
PHP与java的servant,servant_英文阅读网
查看>>
android 编译java,Android 源码的编译
查看>>
cpanel 远程mysql,利用cpanel远程管理MySQL数据库
查看>>