并查集
z-chuner
这个作者很懒,什么都没留下…
展开
-
连通图 环
添加链接描述题意求连通图的数量,及多少个连通图有环,其中只存在一个结点的图不属于连通图思路用并查集维护连通图的数量,每个连通图含有的结点的数量及含有的边的数量code#include<bits/stdc++.h>using namespace std;const int N = 2e6+7;int t, n, m, fa[N], son[N], edge[N], id;void init(int n){ for(int i = 1; i <= n; i++)原创 2021-03-19 08:32:25 · 708 阅读 · 0 评论 -
离散化
离散化先将数组升序排序,然后去重。for(int i = 1; i <= n; i++){ scanf("%d%d%d", &a[i], &b[i], &c[i]); d[++cnt] = a[i]; d[++cnt] = b[i]; } sort(d+1, d+1+cnt); cnt = unique(d + 1, d + cnt + 1) - (d+1); init(cnt); for(int i = 1; i <= n;原创 2021-03-07 14:45:04 · 67 阅读 · 0 评论 -
树上行走
树上行走思路用并查集维护集合个数,找到最大的集合,从小到大输出集合里面的元素,若有多个最大集合,从小到大依次输出。code#include<bits/stdc++.h>using namespace std;const int N = 2e5+5;int fa[N], val[N], n, son[N];void init(int n){ for(int i = 1; i <= n; i++) fa[i] = i, son[i] = 1;}in原创 2021-01-29 10:12:12 · 143 阅读 · 0 评论