|----并查集
yhf_2015
无。。。
展开
-
【洛谷 2024】[NOI2001]食物链
题目描述 动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形。A 吃 B,B 吃 C,C 吃 A。 现有 N 个动物,以 1 - N 编号。每个动物都是 A,B,C 中的一种,但是我们并不知道 它到底是哪一种。 有人用两种说法对这 N 个动物所构成的食物链关系进行描述: 第一种说法是“1 X Y”,表示 X 和 Y 是同类。 第二种说法是“2 X Y”,表示 X 吃原创 2016-08-25 19:30:33 · 675 阅读 · 0 评论 -
【bzoj 1015】[JSOI2008]星球大战starwar
注意:开始的信息可以用邻接链表存虚边,在使用vis数组的时候,要注意要用的值是真是假。 #include using namespace std; const int maxn = 400010; struct node{ int x, y; }; bool cmp(node a, node b){ if(a.x == b.x) return a.y < b.y;原创 2016-08-26 22:54:46 · 400 阅读 · 0 评论 -
【洛谷 2839】 畅通工程
并查集基础题,适合初学者练习。 #include using namespace std; int fa[1010], ans; bool vis[1010]; int find(int x){ return fa[x] == x ? x : fa[x] = find(fa[x]); } int main(){ int n, m; scanf("%d%d", &n, &m);原创 2016-09-21 15:08:25 · 262 阅读 · 0 评论 -
【洛谷 1196】银河英雄传说
简化题意: 有 30000 个元素,初始时每个元素以单独的队列形式存在,支持一下两种操作: 1.动态合并两条队列,将 x 元素所在队列首合并在 y 元素所在队列尾; 2.查询 x 与 y 是否在同一条队列中,若是,查询 x 与 y 间隔元素数量。 共 500,000 次操作。题解: 在父亲节点维护的时候记录每个并查集端点的元素大小,顺便维护一下就好了。#include <bits/stdc原创 2016-10-12 20:02:49 · 546 阅读 · 0 评论 -
【poj 2524】Ubiquitous Religions
题意:有n个学生,m个关系,每个关系a b,以为a b的宗教相同,问最多有多少种宗教。思路:用并查集维护学生的宗教集合,最后遍历统计答案。代码:#include <cstdio> #include <iostream> using namespace std; int fa[50010], cnt, t; bool vis[50010]; int find(int x){ return fa原创 2016-10-18 12:56:28 · 224 阅读 · 0 评论