最大半联通子图对应缩点后的$DAG$上的最长链 复杂度$O(n + m)$ ...
分类:
移动开发 时间:
2018-09-14 23:59:04
阅读次数:
429
思维难度不大,关键考代码实现能力。一些细节还是很妙的。 Description 一个有向图G=(V,E)称为半连通的(Semi-Connected),如果满足:?u,v∈V,满足u→v或v→u,即对于图中任意两点u,v,存在一条u到v的有向路径或者从v到u的有向路径。若G'=(V',E')满足V'? ...
分类:
编程语言 时间:
2018-07-04 21:38:49
阅读次数:
167
1093: [ZJOI2007]最大半连通子图 Description 一个有向图G=(V,E)称为半连通的(Semi-Connected),如果满足:?u,v∈V,满足u→v或v→u,即对于图中任意 两点u,v,存在一条u到v的有向路径或者从v到u的有向路径。若G'=(V',E')满足V'?V,E ...
分类:
其他好文 时间:
2017-11-03 20:14:53
阅读次数:
153
最大半连通子图 Description 一个有向图G=(V,E)称为半连通的(Semi-Connected): 如果满足:?u,v∈V,满足u→v或v→u,即对于图中任意两点u,v,存在一条u到v的有向路径或者从v到u的有向路径。 若G'=(V',E')满足V'∈V,E'是E中所有跟V'有关的边,则 ...
分类:
移动开发 时间:
2017-02-21 19:25:13
阅读次数:
459
惨烈啊。。。int son[x]=>bool son[x]一直调不出来我也是醉了。!!!最新错法。。。 缩点后有重边!!! 就是缩点之后找最长路然后找有多少条最长路树形dp一下。 #include<cstdio> #include<cstring> #include<cctype> #include ...
分类:
其他好文 时间:
2016-09-09 22:28:42
阅读次数:
174
动态规划. 首先,如果一个强连通分量的一个点在子图里,这个强连通分量所有点都在子图。所以先用tarjan算法求出强连通分量,缩点,当成一个点来处理。然后进行俩次动态规划就行了,注意判重边。 #include #include #include #include using namespace std... ...
分类:
其他好文 时间:
2016-05-01 16:14:20
阅读次数:
224
题目大意:定义半连通子图为一个诱导子图,其中任意两点(x,y)中x可到达y或y可到达x,求最大半连通子图的大小以及方案数
不就是个缩点之后拓扑序DP求最长链么 这题意逗不逗233333
注意缩点后连边不要连重复了 判重边那里我用了set。。。
#include
#include
#include
#include
#include
#define M 100100
using na...
分类:
其他好文 时间:
2015-01-19 21:11:11
阅读次数:
204
题解:
首先缩个点是必然,然后随便想想就知道缩点后需要最后是一条链,
也就是——
缩点后求拓扑图最长路以及方案数。
呃,去重的部分我重标号排了个序水过。
代码:
#include
#include
#include
#include
#define N 101000
#define M 1001000
#define inf 0x3f3f3f3f
using n...
分类:
编程语言 时间:
2015-01-11 14:53:41
阅读次数:
253
首先,我们要tarjan。。。 然后我们要缩点。。。注意,缩点的时候两个新建的点会有重边,需要判重正常的判重方法是bfs一边,但是我YY的比较奇葩,方法下面将。。。缩好点就变成了一个DAG,然后就类似树形DP的方法求最大权值链我是用记忆化搜索,当dfs某个点p时用数组vis记录一些东西:首先vis[...
分类:
其他好文 时间:
2014-10-06 23:54:12
阅读次数:
333