Atcoder abc334
https://atcoder.jp/contests/abc334
G - Christmas Color Grid 2
h x w 地图上0/1
4邻的1为连通块
求等概率把一个1改成0以后 exp(连通块个数) mod 998244353
h,w 1000
2s
1024mb
我的思路
就是找 去掉点后是否还连通,tarjan的算法
然后写出问题了
题解
一样的,但是tarjan我的 做并查集有问题
因为
1 | a-b |
这样的话 a-c 有两条连通,c-d有两条连通,但是a-d只有会有关键节点c
1 | 3 3 |
所以 应该是 每个点是割点时,向下的low >= n时, 会生成
代码
https://atcoder.jp/contests/abc334/submissions/50072514
1 |
|
总结
点-双连通: 任意两点之间至少存在两条“点不重复”的路径,即内部无割点。
我的问题在于 tarjan的细节还是有问题,而这里并不能像有向图的强连通分量那样做 并查集
因为
1 | a-b |
这样的话 a-c 有两条连通,c-d有两条连通,但是a-d只有会有关键节点c
所以这里是{a,b,c}
,{c,d,e}
,
如果要求的话,同样的tarjan(u), 但是边(u->v)在dfs时入栈,然后当有割点(low[v] >= dfn[u])时,把栈顶直到(u->v)的全部边 作为一个集合构成 点-双连通