
并查集
并查集解决的是具有传递性关系的题目
重you小垃
这个作者很懒,什么都没留下…
展开
-
并查集模板
解决的问题类型:具有传递性的问题。初始化:unordered_map<char, char> ump;for (每一个元素) ump[each] = each;合并void myunion(int u, int v) { int fau = findfather(u); int fav = findfather(v); if(fau != fav) father[fau] = fav;}//带权值的(乘积的传递) 添加u->v权值为valvoid myunion(原创 2021-12-29 21:36:59 · 175 阅读 · 0 评论 -
leetcode1020. 飞地的数量(中等)
思路:dfs/bfs模板题跟 leetcode130.被围绕的区域(中等) 类似https://blog.youkuaiyun.com/zhangjiaji111/article/details/123668205原创 2022-07-02 11:38:12 · 234 阅读 · 0 评论 -
leetcode684. 冗余连接(中等)
思路:并查集当发现连通的时候,即为最后一条边(因为这条边是构成环的最后一条边,所以当发现连通时即为ans)原创 2022-06-11 12:36:31 · 128 阅读 · 0 评论 -
修改数组(并查集,set区间维护)
思路一:并查集,find()存储的是并查集中要变的值,但是忽略了题目中出现负数的情况。#include <bits/stdc++.h>using namespace std;//并查集 father[i] 存储数字i要变的值 ,假设只有正整数。 int father[1000005];int a[1000005];void init(){ for (int i = 0; i < 1000005; ++i){ father[i] = i; } return ;} ..原创 2021-04-09 12:03:14 · 444 阅读 · 0 评论 -
leetcode399.除法求值(中等)
题目里需要注意的:1:分子和分母都是小写字母组成的长度小于5的字符串。2:这道题中[“x”,“x”]等于-1.0而不是常人理解的1.0,因为x在equations中没有出现过。题目特点:由于比值具有传递性,所以用带权的并查集来做。具体细节:并查集的初始化:所有节点的权值设置为1.0.并查集的合并:先路径压缩!!!,u到v的权值 * v的权值=fau的权值 * u的权值,更新fau的权值。并查集的查找:更新u的权值,u的权值=fau更新后的权值*u原来的权值class Solution ...原创 2021-12-29 21:57:06 · 464 阅读 · 0 评论 -
leetcode990.等式方程的可满足性(中等)
特点:== 具有传递性,所以用并查集的思想做。具体做法:先把所有的==的字符用并查集合并,然后判断所有的!=,然后在一个集合中,则返回false。class Solution {public: unordered_map<char, char> ump; char find(char ch) { if (ump[ch] == ch) return ump[ch]; return ump[ch] = find(ump[ch]); ...原创 2021-12-29 21:43:21 · 208 阅读 · 0 评论