void dos(int x){
cor[x] = tot;
num[tot]++;
sum[tot] += a[x];
vis[x] = false;
}
void tarjan(int x) {
dfn[x] = low[x] = ++cnt;
s.push(x);
vis[x] = true;
for (auto to : e[x]){
if(!dfn[to]){
tarjan(to);
low[x] = min(low[x], low[to]);
}
else if(vis[to])
low[x] = min(low[x], dfn[to]);
}
if(low[x] == dfn[x]){
++tot;
while(s.top() != x){
dos(s.top());
}
dos(s.top());
}
}
比如这个代码的话,在访问结束cpp low[x] == dfn[x]
为何要更新vis[x]为0呢,连成强联通分量之后不应该不会访问这个点了吗?
不解,求大神救救