tarjan
_Ark
这个作者很懒,什么都没留下…
展开
-
无向图的割点和桥 tarjan 模板
#include <bits/stdc++.h>using namespace std;const int MAXN = 20005;const int MAXM = 100005;int n, m, fir[MAXN], nxt[MAXM<<1], to[MAXM<<1], cnt=1;int dfn[MAXN], low[MAXN], tot;...原创 2018-10-30 22:16:35 · 260 阅读 · 0 评论 -
点双联通分量(BCC)的正确姿势
Tarjan求点双连通分量 - 李昊哲转载 2019-03-25 15:17:30 · 315 阅读 · 0 评论 -
uoj30【CF Round #278】Tourists(圆方树+树链剖分+可删除堆)
…学习了一波圆方树学习了一波点分治学习了一波可删除堆(巧用 ? STL)传送门: Icefox_zhx注意看代码看怎么构建圆方树的.tips:tips:tips:圆方树内存记得开两倍CODE#include <vector>#include <queue>#include <cstdio>#include <cctype>...原创 2019-03-25 17:28:12 · 264 阅读 · 0 评论 -
Luogu P4082 [USACO17DEC]Push a Box 点双连通分量/圆方树
(貌似有圆方树的做法,我写的是点双)显然这道题就是直接搜索。定义状态为f[i][j][0~4]表示箱子在(i,j),人在某个方向推。然后问题就是怎么转向。我们发现如果要转向,必须是人走过一条不包括(i,j)的路径到另一个方向。那么直接求一个点双联通分量就完事了。把点双联通里面的点两两之间都有至少两条不经过重复点的路径,这样就能转向了。点双内,具体的处理方法是开一个桶。具体见代码CODE#...原创 2019-07-16 15:32:08 · 306 阅读 · 0 评论 -
BZOJ 3887/Luogu P3119: [Usaco2015 Jan]Grass Cownoisseur (强连通分量+最长路)
分层建图,反向边建在两层之间,两层内部分别建正向边,tarjan缩点后,拓扑排序求一次1所在强连通分量和1+n所在强联通分量的最长路(长度定义为路径上的强联通分量内部点数和)。然后由于1所在强连通分量和1+n所在强联通分量是相同的点,所以路径长度相当于有一头不计算,也就是一个半开半闭区间的形式。最后还可能答案不用跑反向边,取一个较大值就行了CODE#include <bits/stdc...原创 2019-07-19 17:25:54 · 162 阅读 · 0 评论 -
BZOJ 1924 [SDOI 2010] 所驼门王的宝藏 (优化建图+tarjan+最长链)
题意题解如果能把图建出来就是求一个缩点后的最长链。这个建图是可以优化的。考虑同一行的横天门,我们随便找一个横天门uuu。然后用这个点uuu向这一行所有的有效点连单向边。然后再用这一行的其他横天门朝uuu连单向边。可以发现与原图等价。丛寰门同理。自由门直接连。然后就完事了。CODE#pragma GCC optimize ("O2")#include <bits/stdc...原创 2019-09-14 16:37:51 · 151 阅读 · 0 评论