并查集+拓扑排序。使用并查集解决a = b的情况。 1 #include 2 #include 3
#include 4 #include 5 using namespace std; 6 7 #define MAXN 10005 8 9 typedef
struct ...
分类:
其他好文 时间:
2014-06-11 21:54:30
阅读次数:
284
在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中。这一类问题其特点是看似并不复杂,但数据量极大,若用正常的数据结构来描述的话,往往在空间上过大,计算机无法承受;即使在空间上勉强通.....
分类:
其他好文 时间:
2014-06-10 16:20:58
阅读次数:
305
题目:
链接:点击打开链接
思路:
对边排序,再枚举每条边,如果出现通路(findset(x) == findset(y))就结束。
代码:
#include
#include
#include
#include
using namespace std;
#define MAXN 220
#define MAXM 1010
#define MAX ...
分类:
其他好文 时间:
2014-06-10 07:34:46
阅读次数:
237
并查集总结
今天总结一下并查集,这个完了之后,寒假学的数据结构基础的模板类的题目差不多就完了,对于模板题,敲上10遍、20遍、30遍,那么模板
就不是模板,就成为了你自己的东西,就好像 A+B 一辈子也忘不了,以后每天敲一遍模板题,加深对模板的理解。
并查集,一般使用的是 数组实现、树实现,其中数组实现时间复杂度较高,树实现也就是分离集合森林 查找、合并的时间复杂度不会...
分类:
其他好文 时间:
2014-06-09 23:14:04
阅读次数:
204
并查集经典题,但是太坑了,数据只有一组,用EOF读入无限WA,我就这么对着正确的代码查了半个多小时,次奥。把一个结点拆成3个结点分别代表属于A,B,C三类,对于X,Y同类,有如果XA->YA,XB->YB,XC->YC
所以直接把两两并起来,当然要判断能不能并对于X吃Y ,有 XA->YB ,XB-...
分类:
其他好文 时间:
2014-06-09 15:49:48
阅读次数:
212
/*思路:类似图论中“一笔画”问题,两根木棒的相连接的端点是一样的颜色,(a,b)--(b,c)--(c, d)....方法:trie树+并查集,
利用trie树建立字符串和某一个节点的映射,并将这些和字符串构成映射的节点建成图, 用并查集判断图的连通*/ 1 #include 2 #includ....
分类:
其他好文 时间:
2014-06-08 21:46:18
阅读次数:
330
这题一看就应该知道是二分图匹配……我记得有个类似的题有一个并查集的解法,但是我找不到了…… 1 var
i,n,m:longint; 2 p:array[0..1500] of longint; 3 v:array[0..1500] of boolean; 4
a:array...
分类:
其他好文 时间:
2014-06-08 21:35:20
阅读次数:
297
题目意思:有n个村庄,编号1-n,以矩阵的形式给出任意两个村庄之间的距离,然后告诉已经有q个村庄已经修好了路,问现在要打算使所有村庄都联通需要修路的最小长度。
思路就是构造一棵最小生成树,所以将距离排序,从小到大依次并入,直到集合数为1为止。...
分类:
其他好文 时间:
2014-06-08 03:22:29
阅读次数:
289
题目大意:
三个操作。
1. 合并两个集合
2.把第一个元素放到第二个集合里
3.输出集合的数量和和。。
思路分析:
要用p记录这个元素所在集合编号,然后用编号建立并查集。
#include
#include
#include
#include
using namespace std;
typedef long long LL;
int set[111111...
分类:
其他好文 时间:
2014-06-07 12:52:40
阅读次数:
267