
割点
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 · 170 阅读 · 0 评论 -
[HNOI2012]矿场搭建
对于每一个连通块来讲,若连通块内存在割点:首先我们处理出该连通块内的所有点双,将每一个点双标号后,那么我们一定可以得到一棵"类似树" 。1.若一个点双为树中叶节点(只含有一个割点),那么必须在该点双的不是割点的任意一个地方建一个出口,因为叶节点如果不建,一旦割点坍塌就出不去了。(ans+=1,all*=sum)2.若一个点双为树中的非叶节点(含有两个或两个以上的割点的点双),那么就不用在这个点双内再建新的出口了,因为它的任意一个割点坍塌后,也可以从另一个割点走到一个叶节点,而叶节点,之前是已经建有出口原创 2020-10-09 23:19:05 · 272 阅读 · 0 评论 -
[POI2008]BLO-Blockade
将割点与非割点分类讨论。#include <bits/stdc++.h>#define int long longusing 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 · 137 阅读 · 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 · 398 阅读 · 0 评论