并查集
Rancho__
这个作者很懒,什么都没留下…
展开
-
HDU-1232-畅通工程
这题就是并查集的应用,我们可以假设n个城镇之间皆无道路,那就要修建n-1条道路。 每当我们已知两个城镇之间是连通的时候,我们就可以让cnt-1,因为我们没必要修建道路了。 这样的话我们就不用再压缩路径,判断有多少的集合了。 需要注意的一点是,对于并查集的连接,我们应该把它的祖先连接在一起,而不是把它们连接在一起, 因为一个点的祖先最少也是它自己。我们通过find 函数找到之后,就把find的结果连...原创 2019-02-07 16:10:31 · 77 阅读 · 0 评论 -
hihoCoder-1066-无间道之并查集
这题的话我们读入可以用cin这样避免混合输入时的错误,虽然慢一点点,但是我们也可以关闭和stdio 的同步,这样就不慢了。 对于主函数来说,查询的时候,如果两个名字都不存在,那么find(0)==find(0),那就会输出yes,所以对于有任意一个为0的情况,我们就输出no。 我们也可以先编号后操作,两种写法都行。 #include <iostream> #include <st...原创 2019-02-12 12:29:41 · 173 阅读 · 0 评论 -
HDU 3081 Marriage Match II (二分+网络流+并查集)
注意 这题需要注意的有几点。 首先板子要快,尽量使用带当前弧优化的dinic,这样跑起来不会超时。 使用弧优化的时候,如果源点设置成0,记得将cur数组从0开始更新,因为有的板子并不是。 其次这题是多组样例输入,所以每次需要清空head数组,pre数组,deep数组,vis数组等等,以及建图之前将cnt设置为0。 题意 有n个女孩和n个男孩,给出哪些女孩和哪些男孩从未发生冲突,以及女孩之间的朋...原创 2019-08-09 14:55:15 · 98 阅读 · 0 评论 -
The Preliminary Contest for ICPC Asia Xuzhou 2019 B. so easy (unordered_map+并查集)
这题单用map过不了,太慢了,所以改用unordered_map,对于前面删除的点,把它的父亲改成,后面一位数的父亲,初始化的时候,map里是零,说明它的父亲就是它本身,最后输出答案的时候,输出每一位数的父亲就好了。 #include <bits/stdc++.h> using namespace std; unordered_map<int,int>mp; int f...原创 2019-09-24 11:14:26 · 132 阅读 · 0 评论