
强连通分量
huanzhizun
这个作者很懒,什么都没留下…
展开
-
强连通分量(tarjan算法)
#include#include#include#include#include#define max 110using namespace std;int par[max],in[max],out[max];int low[max],dnf[max],sta[max],ccount,tot,cnt;//ccount为强连通分量个数bool use[max];vectorg[m原创 2014-04-29 09:22:03 · 693 阅读 · 0 评论 -
poj 3683 Priest John's Busiest Day 2-SAT
建议读者先了解一下2-SAT,可以通过挑战程序设计竞赛那本书。这道题就是两种情况,我们可以用a表示从开始进行,非a表示从结尾进行,这样我们暴力每两个活动,分别考虑这连个活动在开始或者结尾举行时是否能够同时存在,然后直接加边即可。#include#include#include#include#include#define maxn 2105using namespace std原创 2015-07-11 17:18:36 · 357 阅读 · 0 评论 -
poj 2186 Popular Cows 缩点
用强连通分量缩点之后,看一看出度为0的点有多少个,如果大于1个就输出0,否则输出这个点(连通分量里点的个数)。#include#include#include#include#include#define maxn 11005using namespace std;int low[maxn],dnf[maxn],que[maxn],tear,head[maxn],c[maxn],原创 2015-07-11 17:15:36 · 425 阅读 · 0 评论 -
poj 2723 Get Luffy Out 2-SAT
因为过一个门之后才能到下一个门,所以我们直接二分门数,对于每对钥匙a、b,a&b=0,所以a到n+b加边,b到n+a加边。而对于每个门对于的钥匙a、b两个必须存在一个,所以n+a到b,b+n到a加边即可。#include#include#include#include#include#define maxn 4505using namespace std;int low[maxn原创 2015-07-11 17:28:56 · 411 阅读 · 0 评论 -
poj 3180 The Cow Prom 强连通分量
直接求分量里元素大于1的分量个数即可。#include#include#include#include#include#define maxn 11005using namespace std;int low[maxn],dnf[maxn],que[maxn],tear,head[maxn],c[maxn],mark[maxn];bool map[maxn][maxn];ve原创 2015-07-11 17:24:54 · 435 阅读 · 0 评论 -
poj 2749 Building roads 2-SAT
同样我们二分距离,我们可以这样考虑,对每个仓库a用a表示到第一个结合点连边,非a到第二个转接点连边,接下来我们对于相互恨的和相互喜欢的可以直接加边,对于约束条件,我们暴力每两个仓库,判断这两个仓库分别连在两个转接点时是否可行,用2-SAT作为判断条件。#include#include#include#include#include#include#define maxn 10105原创 2015-07-11 17:32:19 · 410 阅读 · 0 评论 -
poj 2763 Housewife Wind 树链剖分+LCA
对于每组询问,我们直接用logn的复杂度求出两个点的LCA,至于修改边以及查询长度则是树链剖分模板题。#include#include#include#include#include#define maxn 100005using namespace std;int top[maxn],fa[maxn],son[maxn],size[maxn],id[maxn],num,dep[原创 2015-07-11 17:22:42 · 396 阅读 · 0 评论 -
强连通分量(割点)
#include#include#include#include#define maxn 1005using namespace std;int vis[maxn],low[maxn],dnf[maxn],yes[maxn],fa[maxn];vector g[maxn];int map[1005][1005];void init(int n){ for(int i=1;原创 2014-09-05 08:13:42 · 537 阅读 · 0 评论 -
强连通分量(桥)
#include#include#include#include#define maxn 1005using namespace std;int vis[maxn],low[maxn],dnf[maxn],yes[maxn],fa[maxn];vector g[maxn];int map[1005][1005];void init(int n){ for(int i=1;原创 2014-09-05 08:12:28 · 486 阅读 · 0 评论 -
poj 3678 Katu Puzzle 2-SAT
模板2-SAT,至于and之后是1以及or之后是0的情况,如果a&b=1,那么a=1且b=1,a=1则可以用非a到a连一条边即可。#include#include#include#include#define maxn 100005using namespace std;int low[maxn],dnf[maxn],que[maxn],tear,head[maxn],head1[原创 2015-07-11 17:26:36 · 389 阅读 · 0 评论