![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
割点
Love_xyh
这个作者很懒,什么都没留下…
展开
-
[ZJOI2004]嗅探器
所求点一定是一个x,y以外的割点。 我们可以强制当前根为x,那么,若找到一个割点且该割点分割了x,y,那么该割点即为所求。 如何判断是否分割了x,y呢? low[y]>=dfn[u]即可。 #include <bits/stdc++.h> using namespace std; const int N=2e5+5,M=5e5+5; int n,u,v,x,y,ans; int now,dfn[N],low[N]; int cnt,head[N]; struct edge{int next原创 2020-10-09 23:22:04 · 132 阅读 · 0 评论 -
[HNOI2012]矿场搭建
对于每一个连通块来讲,若连通块内存在割点: 首先我们处理出该连通块内的所有点双,将每一个点双标号后,那么我们一定可以得到一棵"类似树" 。 1.若一个点双为树中叶节点(只含有一个割点),那么必须在该点双的不是割点的任意一个地方建一个出口,因为叶节点如果不建,一旦割点坍塌就出不去了。(ans+=1,all*=sum) 2.若一个点双为树中的非叶节点(含有两个或两个以上的割点的点双),那么就不用在这个点双内再建新的出口了,因为它的任意一个割点坍塌后,也可以从另一个割点走到一个叶节点,而叶节点,之前是已经建有出口原创 2020-10-09 23:19:05 · 229 阅读 · 0 评论 -
[POI2008]BLO-Blockade
将割点与非割点分类讨论。 #include <bits/stdc++.h> #define int long long using namespace std; const int N=1e5+5,M=5e5+5; int n,m,u,v,ans[N]; int now,dfn[N],low[N],size[N]; bool cut[N]; int cnt,head[N]; struct edge{int next,to;}e[M<<1]; inline void add(int原创 2020-10-09 15:18:09 · 102 阅读 · 0 评论 -
洛谷 P3388 【模板】割点(割顶)
这里求的割点的意义仅仅指的是:去掉这个点后,不能使得原图联通的点。 当然可能还会有别的各种各样的奇怪树,图中的不同含义的“割点”。 #include <bits/stdc++.h> using namespace std; const int N=1e5+5; int n,m,u,v,now,cnt,ans; int head[N],dfn[N],low[N]; bool cut[N]; struct edge{int next,to;}e[2*N]; inline void add(int原创 2020-10-09 13:25:31 · 366 阅读 · 0 评论