tarjan
make_it_for_good
这个作者很懒,什么都没留下…
展开
-
poj 1486 网络流+tarjan
题意:给一堆矩形和一些点,每个矩形必须对应一个点,求对应的点唯一的矩形个数。如果点在矩形内部那么从点向矩形连流量1的边,从S向点连流量1的边,从矩形向T连流量1的边。跑网络流。跑出来的东西是一种方案。将这种方案变成另一种方案只需要找到所有边剩余流量都为1的环,这样的环一定是偶环且正向边和反向边交替排列。那么把正向边流量流掉,把反向边流量退回就是一种新方案。那么只需要跑一遍tarjan,如果矩形和在网原创 2016-09-04 15:07:35 · 405 阅读 · 0 评论 -
bzoj 4116 [Wf2015]Tours tarjan
这题结论好神。 答案是gcd(删掉一条非桥边后新产生的桥边数量+1)gcd(删掉一条非桥边后新产生的桥边数量+1)#include <bits/stdc++.h> using namespace std; #define N 2100 int head[N],nex[N<<1],to[N<<1]; int bridge[N],ib[N],vis[N],dfn[N],low[N],del[N]; i原创 2016-09-18 10:47:43 · 398 阅读 · 0 评论 -
bzoj 2788 [Poi2012]Festival tarjan+floyd+差分约束
先把这个东西建成差分约束。 跑一遍floyd,如果有负环一定无解。 用tarjan缩点,由于缩完点是一个拓扑图,所以每个强连通分量中的取值是互不影响的(因为可以把拓扑序大的强连通分量中的值无限减少)。所以可以将每个强连通分量的答案相加。然后对于一个强连通分量的答案是这个强连通分量中的点两两之间最长路的最大值+1。 因为所有权值都是0,1,-1,因此从最小值到最大值的所有值都会取到。由于从最小值原创 2016-11-14 11:14:47 · 442 阅读 · 0 评论