关于缩点。
  • 板块学术版
  • 楼主ivnilkkk
  • 当前回复0
  • 已保存回复0
  • 发布时间2025/1/18 22:10
  • 上次更新2025/1/18 22:14:54
查看原帖
关于缩点。
1073341
ivnilkkk楼主2025/1/18 22:10

P3387 【模板】缩点

为什么要用栈?

void dfs(int p) {
	dfn[p] = ++cnt;
	low[p] = dfn[p];
	st[++top] = p;
	in[p] = 1;
	for(auto to : G[p]) {
		if(!dfn[to]) {
			dfs(to);
			low[p] = min(low[p], low[to]);
		} else if(in[to]) {
			low[p] = min(low[p], dfn[to]);
		}
	}
	if(dfn[p] == low[p]) {
		in[p] = 0;
		scc[p] = ++SCC;
		q[SCC] = a[p];
		while(st[top] != p) {
			int u = st[top--];
			q[SCC] += a[u];
			scc[u] = SCC;
			in[u] = 0;
		}
		--top;
	}
}
2025/1/18 22:10
加载中...