并查集
文章平均质量分 51
y20070316
这个作者很懒,什么都没留下…
展开
-
【CodeVS】1073 家族
Overview有n个人,m个亲戚关系,询问p对亲戚关系。 m行两个数Mi,Mj,1<=Mi,Mj<=N,表示Ai和Bi具有亲戚关系。 p行两个数Pi,Pj,询问Pi和Pj是否具有亲戚关系。 n,m,p≤5000n,m,p\leq 5000Analysis并查集裸题。#include <cstdio>using namespace std;int n,m,q;int f[1240*10];原创 2016-01-29 10:50:14 · 356 阅读 · 0 评论 -
【CodeVS】2597 团伙
Overview在某个城市里住着n个人,任何两个认识的人不是朋友就是敌人,而且满足: (1)我朋友的朋友是我的朋友; (2)我敌人的敌人是我的朋友。 所有是朋友的人组成一个团伙。 告诉你关于这n个人的m条信息,即某两个人是朋友,或者某两个人是敌人,请你编写一个程序,计算出这个城市最多可能有多少个团伙?Analysis这种不同的关系的解决办法依然是并查集。 首先确定关系的数量:2种——朋友,原创 2016-01-29 10:55:54 · 896 阅读 · 0 评论 -
【NOIP模拟题】连通
Overview给定一个无向图,请编写一个程序实现以下两种操作: (1)D x y,从原图中删除连接x和y顶点的边。 (2)Q x y,询问x和y顶点是否连通。Analysis这也是连通问题,考虑用并查集解决。 但是这是删除的问题耶,怎么办? 考虑将删除变为连通,能不能将所有操作给反过来,从最后一个操作开始处理。 当然是可以的。Code#include <bits/stdc++.h>us原创 2016-01-29 10:57:48 · 957 阅读 · 0 评论 -
【NOI2001】食物链
Problem【CodeVS】1074 食物链动物王国中有三类动物 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吃Y。原创 2016-01-29 12:11:22 · 133 阅读 · 0 评论 -
【NOI2002】银河英雄传说
Overview有M=30000M=30000个点,NN个操作(N≤500000N\leq 500000)。 每次操作如下: (1)MM ii jj:将ii所在的排列合并到jj所在的排列; (2)CC ii jj:若ii,jj不在同一排列,输出−1-1,否则输出ii与jj之间的数的个数。Analysis【STEP1】 要用在线算法这道题的多个操作,感觉上就是在线维护了。【STEP2】 暴力的想原创 2016-01-29 16:39:49 · 1080 阅读 · 0 评论 -
BZOJ 1015 JSOI2008 星球大战 逆向回代法+并查集
删除边求连通块个数比较麻烦,但增加边求连通块个数可以用并查集来做。 我们考虑存储所有的操作,然后反过来求解。#include <cstdio>#include <cstring>#include <cstdlib>#include <algorithm>using namespace std;const int N=400001;const int M=200001;struct E{原创 2016-02-01 15:31:51 · 398 阅读 · 0 评论