求调缩点

题目总版

```cpp else if(vis[to]){ low[u]=min(low[u],low[to]); } ``` 改成 ```cpp else if(vis[to]){ low[u]=min(low[u],dfn[to]); } ``` 试试
by zhangjiahao @ 2023-02-03 10:00:55


@[zhangjiahao](/user/416716) 改了,而且换掉了出锅的dfs,但是现在好像不会算缩过之后的点权了。
by __Thaumic_Executor__ @ 2023-02-03 12:26:39


@[__Thaumic_Executor__](/user/765382) 1. ```cpp if(dfn[u]==low[u]){ idx++; while(1){ int x=s.top(); s.pop(); scc[x]=idx; vis[x]=0; if(x==u) break; dq[idx]+=val[x]; } } ``` 加上 ```dq[idx]+=val[u];``` 2. Line 6 ```cpp int low[N],rd[N],fr[N],dfn[N],scc[N],vis[N]; ``` fr 的数组开小了
by tribool4_in @ 2023-02-03 13:00:41


@[_504](/user/341650) thx
by __Thaumic_Executor__ @ 2023-02-03 14:03:37


|