![](https://img-blog.csdnimg.cn/2019092715111047.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法-生成树
算法-生成树
键盘上的艺术家w
努力奋斗
展开
-
hdu1875
/*思路:用克鲁斯卡尔求最小生成树,并且限制路的长度即可*/#include#include#include#include#include#includeusing namespace std;struct edge{ int from,to; double w;};struct di{ int x,y;};int pre[101];di原创 2017-07-29 19:55:46 · 620 阅读 · 0 评论 -
hdu1102 最小生成树
/* 思路:水题,直接先将连接起来的边处理掉,将他们连接到一个集合 用并查集,其余的就是克鲁斯卡尔了*/#include#include#include#include#includeusing namespace std;struct edge{ int from,to,w;};int n,m;vectoredges;int map[101][101];原创 2017-07-29 20:24:01 · 240 阅读 · 0 评论 -
hdu1162
/* 思路:最小生成树入门~~~~~先把点跟点的距离算出来,然后求最小生成树 即可。*/#include#include#include#include#include#includeusing namespace std;struct edge{ int from,to; double w;};struct dian{ double x,y;原创 2017-07-29 20:50:04 · 234 阅读 · 0 评论 -
hdu4966 朱刘算法
题意:输入n门课,m条路,然后n个整数,表示这n门课要修到的最高等级,m行路每行5个数 a d1 b d2 x;表示的意思是从要花x元钱直接升级到 b门课的d2等级的前提 是你的a课 要到打d1等级。 要你求 将所有课程等级过完的最小花费。思路:将每门课的每个等级看成一个点,每个点都在图中,每个点只有一个父亲,因为他只能有其他一门课 的前提,所以这是颗,也就是求最小生成树,但是这是有向的边。所原创 2017-07-30 22:31:43 · 342 阅读 · 0 评论 -
hdu1301 最小生成树
题意:输入n个城是,下面n-1行,第一个字母是那个城市的标号,第二个数字是 表示后面有多少条与之相连的边,后面是与之相连的城市的编号加上他的权值。思路:这个题好多英文,英语不好,用了下百度翻译,对着输入图大概看懂了题意。直接map建图然后克鲁斯卡尔就行#include#include#include#include#include#include#includeusing n原创 2017-08-01 11:16:04 · 348 阅读 · 0 评论 -
hdu1598
题意:n个城市m条路,每条路上开车有个速度,要你求从start到end最高速度与最低速度的最小之差;给出两种求得方法第二种有问题代码1:用并查集枚举高度差,其实这里是去掉一部分边,然后跑克鲁斯卡尔。思路写在代码注释上/* 题意:输入n和m 然后m条边,u v a 表示u到v这条路上的速度是a。要你求 输入从start到end 最快速度与最慢速度相差最小的差。思路:先将边排序,原创 2017-08-01 11:25:48 · 335 阅读 · 0 评论 -
hdu3367
/*求伪森林,这种森林由一些图组成,每个图最多只能有一个环,要你求最大权值的伪森林思路:用克鲁斯卡尔合并并查集的时候 判断是不是有相同的祖先,如果是则判断这个祖先有没有环,如果有环那么这条边,就不能要因为要了,就多了个环,而题目规定是每个图一个环,然后加入这条边连接的是两个不同的并查集,那么判断这两个并查集有没有环如果都有环,则不能把他们连接成一个并查集,还是如题意所说只有一个环。连接了原创 2017-08-01 21:52:46 · 433 阅读 · 0 评论 -
hdu 4786 生成树~
题意:给你一个图有白边,和黑边,白边权值为1,黑边权值为0,问有没有一颗生成树,使得白边的条数为斐波拉契数列中的数,如果有就输出Yes没有就No。思路:求一遍最小生成树的和x,然后求一遍最大生成树的和y,然后枚举这个区间看看有没有斐波拉契数列的数。这里只有0,1边,假设10个点那么生成树的边就是9条假如最小生成树的权值为6,最大生成树的权值为9那么,由最小生成树变成最大生成树,实际上是原创 2017-08-21 20:48:33 · 280 阅读 · 0 评论 -
csu1116 最小生成树加枚举
/* 昨天练习赛遇到了这个题,当时想其他题目去了,没有仔细想这个题目。 题意:是1号节点为首都,要你在小于花费k的情况下修路,修路是的每个点的价值最大。 输入 t组数据 n个点m条边,k花费。 接下来的m行是m条边。 思路:一共最多有16个城市,枚举的话是2^16次方,克鲁斯卡尔算法的时间复杂度是O(mlogm)也就是2^16*(100log100)好像是100多万 三秒已经够了。原创 2017-08-07 15:34:44 · 195 阅读 · 0 评论