博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 4313(类似于kruskal)
阅读量:6279 次
发布时间:2019-06-22

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

题目链接:

思路:初始时一条边都不加,将所有边按权值从大到小排序,判断每一个边两端的顶点是否是均为machine节点,如果是则应删除这条边(即sum要加上这条边的权值),否则加入这条边,然后在并查集合并时尽量让根节点为machine节点。

1 #include
2 #include
3 #include
4 #include
5 using namespace std; 6 #define MAXN 100010 7 typedef long long ll; 8 int n,k; 9 int parent[MAXN];10 bool mark[MAXN];11 struct Edge{12 int u,v,w;13 }edge[MAXN];14 ll sum;15 16 int cmp(const Edge &p,const Edge &q){17 return p.w>q.w;18 }19 20 int Find(int x){21 int s;22 for(s=x;s!=parent[s];s=parent[s])23 ;24 while(s!=x){25 int tmp=parent[x];26 parent[x]=s;27 x=tmp;28 }29 return s;30 }31 32 void Union(int u,int v){33 if(mark[u])parent[v]=u;34 else if(mark[v])parent[u]=v;35 else if(u
View Code

 

转载地址:http://wcyva.baihongyu.com/

你可能感兴趣的文章
Git使用教程
查看>>
使用shell脚本自动监控后台进程,并能自动重启
查看>>
Flex&Bison手册
查看>>
solrCloud+tomcat+zookeeper集群配置
查看>>
/etc/fstab,/etc/mtab,和 /proc/mounts
查看>>
Apache kafka 简介
查看>>
socket通信Demo
查看>>
技术人员的焦虑
查看>>
js 判断整数
查看>>
建设网站应该考虑哪些因素
查看>>
mongodb $exists
查看>>
js实现页面跳转的几种方式
查看>>
sbt笔记一 hello-sbt
查看>>
常用链接
查看>>
pitfall override private method
查看>>
!important 和 * ----hack
查看>>
聊天界面图文混排
查看>>
控件的拖动
查看>>
svn eclipse unable to load default svn client的解决办法
查看>>
Android.mk 文件语法详解
查看>>