提一点小细节
查看原帖
提一点小细节
105254
Piwry楼主2020/5/30 19:25

(先看看我丑陋的程序)

void dfs1(int u, int fa){
	/*<-*/
	int bottom =top;
	edge E;
	for(int l =first[u]; l; l =E.net){
		E =e[l];
		if(E.to != fa){
			dfs1(E.to, u);
			if(top-bottom >= S){
				++totk;
				while(top != bottom) chunk[stk[--top]] =totk;
				prov_cap[totk] =u;
			}
		}
	}
	stk[top++] =u;/*<-*/
}

其他地方不要管,注译的入栈代码如果放在开头的话,分的块大概是这样:

A

如果放在结尾,橙色部分就不可能出现。

仅仅是分块或许没问题,但这题的判省会操作若放在 dfs 中间直接判的话第一种分块就会有问题(硬要说额外搜一次再判也太麻烦...)

以上。

2020/5/30 19:25
加载中...