
并查集
风萧萧兮易水寒丶
985软件工程本科在读
展开
-
旅旅旅游(最短路、查并集)
解题思路: 代码: #include <bits/stdc++.h> #define ll long long using namespace std; const int maxn=1e6+10; ll dis1[maxn],dis2[maxn],inf=0x3f3f3f3f3f3f3f3f; bool vis[maxn]; struct Edge { int u,to...原创 2020-04-21 19:17:10 · 179 阅读 · 0 评论 -
人人都是好朋友(查并集、数据离散化)
代码: #include <bits/stdc++.h> using namespace std; int t,n; const int maxn=5e6+10; int arr[maxn]; int a[maxn]; int b[maxn]; int c[maxn]; int pre[maxn]; int find(int x) { if(x==pre[x]) return...原创 2020-04-20 20:09:56 · 146 阅读 · 0 评论 -
洛谷—P2661 信息传递(查并集/强连通分量)
解题思路: 我们可以考虑用并查集来做这道题。 我们在连接一个点到另一个点之前,先用并查集判断是否构成一个环,如果是的话,我们就可以记录下这个答案,然后维护最小的答案。 那么,如果构成一个环的话,怎么记录它的长度呢? 我们可以先定义一个变量cnt,在并查集获取祖先的函数中使cnt的值加1,最后函数结束时就能得到这个环的长度了qwq! 同时,如果构成了一个环,就不需要把这个环的结尾接上,否则会陷入死...原创 2020-02-13 22:13:34 · 213 阅读 · 0 评论 -
(模板)并查集
#include<iostream> using namespace std; int arr[10010], n, m, z; int search(int i) { if (arr[i] == i) return arr[i]; return arr[i] = search(arr[i]); } int main() { cin >> n >> m;...原创 2020-02-12 16:05:24 · 115 阅读 · 0 评论