并查集
今天没吃药
这个作者很懒,什么都没留下…
展开
-
POJ1611 - The Suspects (并查集的应用)
题目链接思路并查集的简单应用,用负数来判断是否到达边界,直接用根元素里的数字的绝对值来确定当前集合的大小。代码#include <iostream>#include <cstring>#include <cstdio>using namespace std;const int maxn = 30010;int par[maxn];int get_par(int cur){ if(p原创 2015-10-07 23:56:06 · 295 阅读 · 0 评论 -
POJ1308 - Is It A Tree? (并查集)
题目链接思路要想构成一棵树,那么就要满足,每一次的连边都是在两个不同的集合间进行的,这个用并查集就可以做。 还要将所有的节点都要连起来,所以记录一下节点数和边数,利用set就可以得到不同的节点个数,然比较是否满足节点数等于边数加一。 再对空树进行特判。代码#include <algorithm>#include <set>#include <cstdio>#include <cstring原创 2015-10-08 00:00:24 · 341 阅读 · 0 评论 -
POJ1861 - Network (并查集,最小生成树)
题目链接思路按照最小生成树来做就行,不要受样例的影响。代码#include <algorithm>#include <cstring>#include <cstdio>using namespace std;int par[1010];int get_par(int a){ if(par[a]<0) return a; else return par[a] = get_par原创 2015-10-07 23:58:36 · 356 阅读 · 0 评论 -
HDU1232-畅通工程 (并查集)
题目链接思路并查集,n个节点最少需要建设n-1条边,每有一个连接不同集合的边出现,所需建设的路就少一条。代码#include <cstdio>#include <cstring>using namespace std;const int maxn = 1000;int par[maxn+10];int get_par(int a){ if(par[a]<0) return a;原创 2015-10-08 00:29:24 · 268 阅读 · 0 评论 -
POJ2524 - Ubiquitous Religions (并查集的基础应用)
题目链接思路并查集,询问有多少个集合。代码#include <iostream>#include <cstring>#include <cstdio>#include <set>using namespace std;const int maxn = 50100;int par[maxn];int find(int a){ if(par[a]<0) return a; el原创 2015-10-07 23:57:02 · 299 阅读 · 0 评论 -
foj2155 - 盟国 (并查集的删除操作)
题目链接思路并查集的删除节点,基本的并查集只涉及合并和查询,没有删除。 并查集的结构是树形的,在删除一个节点的同时还要保持其子节点与根节点的相对关系,是很麻烦的,所以我们的做法就是不去删除,而是重新为它开辟空间来进行存储。 也就是再开一个info数组,来保存各个节点的关系的存储位置,在用一个par数组来维护节点之间的关系。 对于整个代码来说,并查集的操作并不需要变化,只需要添加一个del函数。原创 2015-10-11 21:11:53 · 735 阅读 · 0 评论