POJ 3177 (Redundant Paths) —— (有重边,边双联通,无向图缩点)
摘要:做到这里以后,总算是觉得tarjan算法已经有点入门了。 这题的题意是,给出若干个点和若干条边连接他们,在这个无向图中,问至少增加多少条边可以使得这个图变成边双联通图(即任意两点间都有至少两条没有重复边的路径可以到达,可以经过同一个点。这个条件等价于每一条边都至少在一个环中)。 方法:将无向图缩点以
阅读全文
UVA 796 Critical Links —— (求割边(桥))
摘要:和求割点类似,只要把>=改成>即可。这里想解释一下的是,无向图没有重边,怎么可以使得low[v]=dfn[u]呢?只要它们之间再来一个点即可。 总感觉图论要很仔细地想啊- -一不小心就弄混了。。 另外从这题发现,代码还是写成模块化比较好,比如solve一个函数,init一个函数等等,这样可以避免很多
阅读全文
POJ 1144 Network —— (找割点)
摘要:这是一题找无向图的割点的模板题,割点的概念什么的就不再赘述了。这里讲一下这个模板的一个注意点。 dfs中有一个child,它不等于G[u].size()!理由如下: 如上图,1的size是2,但是它的child是1,因为对他进行dfs时,顺序是1-2-3...然后再等到它访问它的第二个节点3时,3已
阅读全文
POJ 1236 Network of Schools —— (缩点的应用)
摘要:题目大意:有N个学校和一些有向边将它们连结,求: 1.最少需要向几个学校发放软件,使得他们中的每一个学校最终都能够获得软件。 2.最少需要增加几条有向边使得可以从任意一个学校发放软件,使得每一个学校最终都能够获得软件。 分析: 1.缩点以后,找出入度为0的点的个数即可(因为没人可以给他们软件)。 2
阅读全文
UVA 247 Calling Circles —— (强连通分量模板题)
摘要:第一个强连通分量的题。 题意:有一堆人,a给b打电话表示a有一条向b的边,一个强连通分量代表一个电话圈,把每个电话圈里的人在一行内输出出来。 直接上模板即可,但是要注意把string用map映射一下的技巧。 代码如下: 但是搞不懂的是为什么注释掉的输出部分是错的呢- -
阅读全文
【模板】强连通分量和tarjan算法
摘要:看了好久才终于明白了这个算法。。复杂度是O(n+m)。 我觉得这个算法不是很好理解,但是看懂了以后还是觉得听巧妙的。 下面给出模板代码和三组简单数据帮助理解。 代码如下: 三组数据如下:
阅读全文
zstu 4237 马里奥的求救——(单调队列DP)
摘要:题目链接:http://oj.acm.zstu.edu.cn/JudgeOnline/problem.php?id=4237 这题可以转化为每次可以走g~d+x步,求最大分数,且最大分数的步数最少。 这题的数据范围比较小,可以用奇怪的姿势过。 首先,lyf队长给的方法是n^3的dp过;用我自己的方法
阅读全文