并查集
Keter_Plus
这个作者很懒,什么都没留下…
展开
-
POJ 1703 Find them, Catch them
并查集的经典题型,一共有两种操作:两个案件AB不是同一个团伙,询问AB是不是同一个团伙作案我在结构体中定义两个元素,一个记录其父节下标,另一个记录其与父节点的关系,如果是同一个组织那么就记为0,否则记为1,在进行带路径压缩的查找父节点操作的时候可以用异或运算来计算节点与根节点的关系。利用这种思路也可以解决另一道叫做“食物链”的题目#include <memory.h> #include <iostr原创 2015-12-10 17:28:33 · 276 阅读 · 0 评论 -
POJ 1258 Agri-Net
经典的求最小生成树的题目,只不过题目中的路线是由关联矩阵所给出的,还是套用最经典的算法,把所有的边按照长度从小到大进行排序,然后利用并查集顺次判断每条路的出发点和目的地是不是已经在一个等价类内部了,如果不是的话把这条边的长度加到总长度上然后把两个地点放在同一个等价类里面。另外注意本题一个case里面有很多组测试数据,注意初始化。#include <iostream> #include <algori原创 2016-01-16 10:53:28 · 215 阅读 · 0 评论 -
POJ 2492 A Bug's Life
老样子,经典的并查集题目,和Find them,catch them几乎一样的做法,只不过增加了一个判断,在两个结点的父节点相同的时候判断一下他们俩的新关系和原有的关系是否有矛盾;另外注意即使有矛盾也不能提前跳出循环,因为还有很多数据要输入= =#include <iostream> #include <cstdio> #include <memory.h> using namespace std;原创 2015-12-17 16:33:11 · 184 阅读 · 0 评论