P5058 [ZJOI2004] 嗅探器
简要题意
给定一张图,再给处图中两个点 $x,y$,现在要在图中删去除了 $x,y$ 以外的一个点使得 $x$ 和 $y$ 不再连通,求要删除的点的编号
题目分析
题目要求我们删掉一个点使得给定的两个点不连通,那么其实我们就是要找一个满足要求的割点,如下图标黑的点就是题目给定的两个点:

点 $1$ 是一个割点,我们删除点 $1$ 即可使得 $2,4$ 两点不连通,但是并非任意割点都满足要求,比方说下面这张图:

点 $3$ 和点 $4$ 都是图中的割点,但是删去 $4$ 并不能使得目标点 $1,7$ 不连通,所以只有点 $3$ 是符合条件的点,那么我们就要去筛选割点中符合要求的点。
怎么筛呢?其实我们想一想建立 DFS 树的过程,我们从题中给定的一个点开始搜,那么对于一个符合条件的割点来讲,题中给定的另一个点一定在这个符合条件的割点的子树中。所以在搜的时候加个判断条件就好了。本题因为不能删去根,所以不用考虑根是割点的情况,那么代码也就非常简单:
1 |
|
说些什么吧!