BZOJ1018 [SHOI2008]堵塞的交通traffic(分块+并查集)

这份题解没有在BZOJ上AC(狂汗不止),不过我觉得分块的思想挺不错的,就尝试了一下

不过相似的代码可以AC这道题LA 4082 Traffic Jam

如图,先给点编号,然后每一块中暴力维护并查集:

BZOJ1018 [SHOI2008]堵塞的交通traffic(分块+并查集)_第1张图片

Open:在同一块中就维护并查集,在不同块互相连通就用一个link数组记录

Close:在同一块中就把块中元素的fa[]全部重新计算,在不同块中直接把link赋零

Ask:判断A及能到达的4个顶点,再递归4个顶点到其他块的顶点,看顶点与B是否连通


#include
#include
#include
#define SIZE 512
int G[200005][5]={0},p[200005]={0},fa[200005]={0},jiao[200005/SIZE+5][5],link[200005]={0},vis[200005]={0};
int tot=0;
int min(int a,int b)
{
	if(a


你可能感兴趣的:(并查集,其他数据结构)