并查集
郭晋龙
压力面前保持优雅
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
团体程序设计天梯赛(L2-024 部落 (25 分))
题目: 思路分析: 标准的并查集模版题!自己看吧! 代码实现: const int MAX=100010; int fa[MAX]; int vis[MAX]; int vis1[MAX]; int find(int x){ if(x==fa[x]) return x; return fa[x]=find(fa[x]); } void add(int x,int y){ int xx=find(x); int yy=find(y); if(xx==.原创 2021-11-01 18:56:29 · 378 阅读 · 0 评论 -
团体程序设计天梯赛(L2-013 红色警报 (25 分))
题目: 思路分析: 第一思路就是并查集吧! 没错相信自己 是不是想到要拆边!(可是并查集并没有这操作呀! 那怎么呢 1.反向建图(这个好实现 就不写了 2.多次更新 和上一次的更新的状态量比较 就是比二者的连通块的数量 数据不大 完全可以实现! 代码实现: const int MAX=10010; int vis[MAX]; int fa[MAX]; int find(int x){ if(x==fa[x]) return x; return fa[x]=fin.原创 2021-10-30 14:35:40 · 389 阅读 · 0 评论 -
P2024 [NOI2001] 食物链
二种动物之间有三种关系 那么我们可以开辟三倍空间的并查集 1~n n+1~2*n 2*n+1~3*n 如果u v 是同类的话那么就让三个群系中的uv全部相连 如果u 吃v的话 那么就u连v的下一个群系 那么如何判断是否正确呢 判断是否是同类我们只需要判断相邻群系的二者是否属于一个集合 判断是否异类 我们只要判断在同一个群系中二者是否属于一个集合 const int MAX=100010; int fa[MAX*3]; int find(int x){ if(x==fa[x]...原创 2021-10-21 16:38:58 · 152 阅读 · 0 评论 -
P1197 [JSOI2008]星球大战(逆向并查集)
思路: 乍一看题目我们可以直接想到的是并查集的运用 开始我们知道并查集可以用来连通图 但是怎么用来拆图呢 那么我们为啥子不先一开始不连被摧毁的城市的点 然后逆序连图 存入栈中 到最后逆序输出 const int MAX=1000010; int fa[MAX]; int vis[MAX]; int a[MAX]; int find(int x){ if(x==fa[x]) return x; return fa[x]=find(fa[x]); } vector<i...原创 2021-10-21 15:35:34 · 164 阅读 · 0 评论 -
算法竞赛入门经典 每日一题(树上行走)
题目描述 牛牛苦练武功绝学——轻功水上漂,最终没有练成,但是他学会了在树上行走的本领。 这天,牛牛落入了敌人的陷阱,身后有巨石追击,面前有n个点,n-1条边连成一张连通图(一棵树),现在牛牛必须立马选择进入这张图中,但是牛牛发现,这张图有两种不同的点,一旦进入一个点,所有与该点不同类型的点都会消失(相连的边也会消失),牛牛只能走到有边相连的点,牛牛想要自己尽量有更多的点可以活动,那么他可以进入哪些点? 输入描述: 第一行有一个正整数 nn 表示共有 nn 个点(n≤2×105)(n...原创 2021-10-19 10:49:44 · 402 阅读 · 0 评论 -
黑白边(并查集)
黑白边 比赛主页 我的提交 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K 64bit IO Format: %lld 题目描述 n个点,m条边,每条边分为黑边和白边,现在需要挑一些边出来,使得n个点可以两两联通。由于牛牛特别讨厌白边,所以在挑中的边中,让白边最少,输出白边的条数,如果不能两两联通,输出−1. 输入描述: 第一行两个整数n,m. 1≤n,m≤2e5 接下来 m 行, 每行三个整数 x,y,z 代表xy...原创 2021-09-28 01:18:51 · 175 阅读 · 0 评论 -
集合问题-NC15167(并查集+二分法)
集合问题 题解 讨论 查看他人的提交 我的提交 题号:NC15167 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K 64bit IO Format: %lld 题目描述 给你a,b和n个数p[i],问你如何分配这n个数给A,B集合,并且满足: 若x在集合A中,则a-x必须也在集合A中。 若x在集合B中,则b-x必须也在集合B中。 输入描述: 第一行 三个数 n a b 1<=n<=1...原创 2021-09-21 14:38:47 · 650 阅读 · 0 评论 -
经商(水题)(并查集+背包)
经商 题解 讨论 查看他人的提交 我的提交 题号:NC14348 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K 64bit IO Format: %lld 题目描述 小d是一个搞房地产的土豪。每个人经商都有每个人经商的手段,当然人际关系是需要放在首位的。 小d每一个月都需要列出来一个人际关系表,表示他们搞房地产的人的一个人际关系网,但是他的精力有限,对应他只能和能够接触到的人交际。比如1认识2,2认识3,那么1就可以...原创 2021-09-21 00:03:30 · 170 阅读 · 0 评论 -
加边的无向图(并查集)
加边的无向图 题解 讨论 查看他人的提交 我的提交 题号:NC14685 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K 64bit IO Format: %lld 题目描述 给你一个n个点,m条边的无向图,求至少要在这个的基础上加多少条无向边使得任意两个点可达~ 输入描述: 第一行两个正整数 n 和 m 。 接下来的m行中,每行两个正整数 i 、 j ,表示点i与点j之间有一条无向道路。 输出描述: ...原创 2021-09-20 23:38:25 · 182 阅读 · 0 评论
分享