对于有向图来说,由部分点和部分边组成的子图,任意两点都可以到达,但不一定是直达,直白的说,就是子图中有环,或者多个环嵌套。 应用 求缩点问题,在一个有向图中找权值和最大的,就可以找一遍图的所有的能够形成强连通分量的子图,把他们缩成一个点,的权值为所有子图点权值之和,然后找这个图的最多全职和路径 ...
分类:
其他好文 时间:
2019-08-27 00:36:56
阅读次数:
59
https://www.luogu.org/problem/P2341 ...
分类:
其他好文 时间:
2019-08-23 10:46:52
阅读次数:
96
n 个选手参加了一场竞赛,这场竞赛的规则如下:
1.一开始,所有选手两两之间独立进行比赛(没有平局)。
2.主办方将胜者向败者连边形成 n 个点的竞赛图。
3.主办方对这个竞赛图进行强连通分量缩点。
4.每一个强连通分量内部的选手重复步骤 1~3,直到每一个强... ...
分类:
其他好文 时间:
2019-08-20 12:50:42
阅读次数:
64
前置芝士:Tarjan求强连通分量 对于一个有向图中的两个点,对于$V_i V_j$有一条边且$V_j V_i$有一条边(即能互相到达),就是一个强连通分量(不局限于两个点) 我们可以用$Tarjan$求出一个有向图中所有的强连通分量。 那么,在一些图中可以将强连通分量缩成一个点。并对它做一个标记。 ...
分类:
其他好文 时间:
2019-08-16 22:21:31
阅读次数:
103
[toc] 链接 "P2863 [USACO06JAN]牛的舞会The Cow Prom" 思路 用$tarjian$求出强连通分量,并且记录出强连通分量里的点的个数,如果个数大于$1$就$ans++$ 代码 cpp include include include using namespace s ...
分类:
其他好文 时间:
2019-08-15 13:06:47
阅读次数:
70
// Tarjan算法求有向图强连通分量并缩点 #include #include #include #include #include #include using namespace std; const int N = 100010, M = 1000010; // int ver[M], N... ...
分类:
编程语言 时间:
2019-08-13 20:56:44
阅读次数:
100
【双连通分量】 一、边双连通分量定义 在分量内的任意两个点总可以找到两条边不相同的路径互相到达。总而言之就是一个圈,正着走反着走都可以相互到达,至少只有一个点。 二、点双连通分量的定义 参照上面,唯一的不同:任意两个点可以找到一个点不同的路径互相到达。也是一个圈,正反走都可以,至少为一个点。 三、边 ...
分类:
其他好文 时间:
2019-08-13 20:08:12
阅读次数:
123
直接给他缩点然后求新的图的完整版: C2[u]表示缩点后的u点这个环上的点实际上是哪些 G3[u]表示缩点后的u点的出边 还是一样,要记得先处理入链。(可以让这个图好看一点但是没啥鸟用)入链可能会有一些特别的性质,当然假如入链没有特别性质也可以直接缩点。 不对其实直接缩点就可以了,入链还是新图的入链 ...
分类:
其他好文 时间:
2019-08-13 17:27:05
阅读次数:
66
P2341 [HAOI2006]受欢迎的牛 题解 tarjan 缩点板子题 如果 A 稀饭 B,那就 A 向 B 连边,构造出一个有向图 如果这个有向图里有强连通分量,也就说明这个强连通分量里的所有奶牛互相稀饭,他们都有机会成为明星奶牛 但是如果这个有向图里有2个及以上的出度为0的强连通分量,那么就 ...
分类:
其他好文 时间:
2019-08-13 17:17:35
阅读次数:
81
Kosaraju算法 O(n+m) https://www.luogu.org/problem/P1262 首先考虑假如一个间谍没办法被揭发不能被贿赂,也就是他不是可行的入口点也没有别人指向他,那么无解。 否则可能要若干个入度为0的点,这些点必须被贿赂,且这些点能到达的点不需要再贿赂。 否则一定存在 ...
分类:
其他好文 时间:
2019-08-13 15:48:50
阅读次数:
124