并查集
最菜的acmer
这个作者很懒,什么都没留下…
展开
-
POJ3694(tarjan缩点+并查集+LCA)
题目大意:在之前的图上面加一条边后剩下桥的数目。 题解思路:在缩点后一条边加完之后,那么两点和它们的最近公共祖先的点形成一个圈就是减少桥的数目,然后通过路径压缩把这两个点的到他们的最近公共祖先之间的点的父节点都压缩到最近公共祖先的点。 注意不要用vector容器保存否则会超时用邻接表题目链接#include<cstdio>#include<cstring>#include<algorithm原创 2017-06-07 21:28:40 · 575 阅读 · 0 评论 -
CF423div2-C
题意:给你一些子字符串猜字符串题解思路:路径压缩去找最右边没有被使用过的字符赋上字符即可#include<iostream>#include<cstring>#include<algorithm>using namespace std;const int mx = 3e6+5;int p[mx];char s[mx];char str[mx];int find(int x){原创 2017-07-12 14:28:53 · 309 阅读 · 0 评论 -
Codeforces Round #423Div. 2 A-E题解
A题:水题看题目然后模拟一下就好了#include <bits/stdc++.h>using namespace std;int main(){ int n,o,t; int tmp=0; int ans=0; scanf("%d%d%d",&n,&o,&t); while(n--) { int x; scanf(原创 2017-07-12 21:22:36 · 376 阅读 · 0 评论 -
HDU - 1811(拓扑排序+并查集)
题解:将相等的点并到一个集合里面,然后拓扑排序如果存在环就是矛盾,如果一个队列里面存在多个数就是,不确定,其他都是OK#include<iostream>#include<cstdio>#include<cstring>#include<set>#include<queue>#include<vector>#include<algorithm>using namespace std;原创 2017-08-14 20:01:34 · 239 阅读 · 0 评论 -
uva11987Almost Union-Find (并查集)
题解:有n个数,m次操作1:把p的集合并到q集合里面,在同一集合就不用操作2:把p数字并到q集合里面,在同一集合就不用操作了3:输出p集合所有在的数字个数和数字总和题解::除了操作2其他都是跟普通的带权并查集一样,不过操作2有点不一样如果不在同一个集合,就重新开一个点代表p数字的所对应的点然后并到q里面,并且p原来的集合所对应的数字个数和数字总和减掉该减掉的部分即可#i原创 2017-08-31 22:08:20 · 293 阅读 · 0 评论