题目要求一个最大的弱联通图。
首先对于原图进行强连通缩点,得到新图,这个新图呈链状,类似树结构。
对新图进行记忆化dp,求一条权值最长的链,每个点的权值就是当前强连通分量点的个数。
/*
Tarjan算法求有向图的强连通分量set记录了强连通分量
Col记录了强连通分量的个数。
*/
#include
#include
#include
#include
#include
usin...
分类:
其他好文 时间:
2014-06-27 10:12:12
阅读次数:
275
本题分两步:
1 使用Tarjan算法求所有最大子强连通图,并且标志出来
2 然后遍历这些节点看是否有出射的边,没有的顶点所在的子强连通图的所有点,都是解集。
Tarjan算法就是模板算法了。
这里使用一个数组和一个标识号,就可以记录这个顶点是属于哪个子强连通图的了。
然后使用DFS递归搜索所有点及其边,如果有边的另一个顶点不属于本子强连通图,那么就说明有出射的边。
有难度的题目:
...
分类:
其他好文 时间:
2014-06-25 07:19:31
阅读次数:
241
用tarjan进行缩点。
然后用dfs求最长路。水体。。。
#include
#include
#include
#include
#include
#include
#include
using namespace std;
#define maxn 110000
vectorold[maxn];
vectorvec[maxn];
int dnf[maxn],low[maxn],instac...
分类:
其他好文 时间:
2014-06-22 11:51:01
阅读次数:
203
Tarjan算法。1.若u为根,且度大于1,则为割点2.若u不为根,如果low[v]>=dfn[u],则u为割点(出现重边时可能导致等号,要判重边)3.若low[v]>dfn[u],则边(u,v)为桥(封死在子树内),不操作。求割点时,枚举所有与当前点u相连的点v:1.是重边: 忽略2.是树边: T...
分类:
其他好文 时间:
2014-06-15 11:46:09
阅读次数:
165
思路:如果出现了一个强连通分量,那么走到这个点时一定会在强连通分量里的点全部走一遍,这样才能更大。所以我们首先用Tarjan跑一遍求出所有强连通分量,然后将强连通分量缩成点(用到栈)然后就变成了一个DAG(有向无环图),然后跑一遍DFS,不断加上遍历点的权值,如果到了网吧,则更新一遍答案,因为可以出...
分类:
其他好文 时间:
2014-06-15 11:38:55
阅读次数:
179
关于tarjan的思想可以在网上搜到,具体我也不太清楚,应该说自己理解也不深,下面是做题经验得到的一些模板。其中有很多转载,包括BYVoid等,感谢让我转。。。望各路大神愿谅有向图求连通分量的一般方法:
1 void Tarjan(u) { 2 dfn[u]=low[u]=++index 3...
分类:
其他好文 时间:
2014-06-13 16:14:11
阅读次数:
395
一、基本概念:1.割点:若删掉某点后,原连通图分裂为多个子图,则称该点为割点。2.割点集合:在一个无向连通图中,如果有一个顶点集合,删除这个顶点集合,以及这个集合中所有顶点相关联的边以后,原图变成多个连通块,就称这个点集为割点集合。3.点连通度:最小割点集合中的顶点数。4.割边(桥):删掉它之后,图...
分类:
其他好文 时间:
2014-06-09 15:43:52
阅读次数:
344
链接:
POJ 2186 Popular Cows
题意:
每一头牛都希望在牛群里面备受瞩目,在一个牛群中有N头牛(1
输入:
第一行两个整数 N 和 M
第2 到 M + 1 行,两个分开的数 A,B,意味着 A认为 B 更受欢迎。
输出:
被所有牛认为受欢迎的牛的个数
比如输入:
3 3
1 2
2 1...
分类:
其他好文 时间:
2014-06-08 18:20:40
阅读次数:
204
在有向图 G 中,若两个顶点相互可达,则称两个顶点强连通(strongly
connected)。
如果有向图G的每两个顶点都强连通,称G是一个强连通图。
非强连通图有向图的极大强连通子图,称为强连通分量(strongly
connected components)。
比如下面第一幅图
( a, b, e ), ( d, c, h ), ( f, g ) 分别为三个 SCC。...
分类:
其他好文 时间:
2014-06-08 15:24:15
阅读次数:
300
很裸的模版题,不过Tarjan要好好多拿出来玩味几次
很有点巧妙呢,tarjan,大概就是当前结点和它儿子结点的羁绊
WA了俩小时,,,原因是,这个题是多数据的(还没告诉你T,用scanf!=EOF来控制结束),更重要的是和这个和Codeforces不一样,Codeforces的多组数据好像会重新开始程序似的,不用在程序里面写清零,但这个题是多数据用EOF来控制输入的,多数据在一个文件里都一次...
分类:
其他好文 时间:
2014-06-08 08:28:39
阅读次数:
190