- 博客(2)
- 收藏
- 关注
原创 题解 P3385 【【模板】负环】
(图爆了,重新交一次)本题我用了dfs与bfs两种解法,但#9显然是在卡dfs,所以遗憾91分。代码附于文末,可供参考。当bfs中一个点的d值被更新达到n次,说明图中存在负环。如下图如果是bfs求最短路的话,势必会在这个环里无限转圈。所以我们用一个下标对应点编号的数组来存这个点被访问的次数因为一个点最多与n-1个点相连,也就是最多被访问n-1次。所以当这个点被访问到n次时,这条路径上一定有负环。代码如下#include<bits/stdc++.h>using namespace
2020-06-05 16:45:47
196
原创 题解 P5058 【[ZJOI2004]嗅探器】
因为a,b间所有的信息都要经过中间服务器,说明中间服务器删掉后,ab不连通,这个中间服务器一定是一个割点。我们在用Tarjan求割点时,要判断割点是否把 a 和 b 必须分割到两个不连通的部分中。为了简化问题,我们直接把a点作为根,从a点开始做DFS。最容易想到的就是判断b的时间戳(dfn)是否不小于我们找到的割点,如下图但是这种想法是有缺陷的。假如a有一条连向b的边,但b却是由u遍历到的,那么这时u就不能分开a与b。所以我们想到利用判断 u是割点的 v点对于一个割点u,若判定u为割点的边
2020-06-05 16:34:26
192
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人