摘要: 题目大意:一个有源有汇的城市,问最少增加城市中的多少道路可以增加源到汇上各个路径上可容纳的总车流量增加。 网络流关键割边集合指如果该边的容量增加,整个网络流图中的任意从原点到汇点的路径的流量便可增加。 从源点开始遍历未满流的边,这些边两端节点的集合称为S;同理再从汇点开始遍历,集合称为T;其余的点组 阅读全文
posted @ 2018-02-25 12:09 headboy2002 阅读(100) 评论(0) 推荐(0) 编辑
摘要: 题目大意:问一个图至少加多少边能使该图的边双连通分量成为它本身。 图的边双连通分量为极大的不存在割边的子图。图的边双连通分量之间由割边连接。求法如下: 注意:如果一个边是割边,则其反向边也是割边。 阅读全文
posted @ 2018-02-25 11:39 headboy2002 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 题目大意:问一个有向图是否任意两点在两个方向上互相连通。 有向图强连通分量定义:如果一个图中的任意两点在两个方向上都互相连通,则该图为强连通图。极大强连通图为有向图的强连通分量(注意是极大,不是最大。一个图会有多个强连通分量)。感性理解,强连通图就是多个环,或者一个点连接在一起所产生的图。 如何求? 阅读全文
posted @ 2018-02-24 14:55 headboy2002 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 题目大意:求以无向图割点。 定义:在一个连通图中,如果把点v去掉,该连通图便分成了几个部分,则v是该连通图的割点。 求法:如果v是割点,如果u不是根节点,则u后接的边中存在割边(u,v),或者v->Low所对应的节点就是u(即u->DfsN <= v->Low),图所分成的部分为v的子树与其它;如果 阅读全文
posted @ 2018-02-23 20:50 headboy2002 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 题目大意:求无向图的割边编号。 割边定义:在一个连通图中,如果删去一个边e,图便变成不连通的两个部分,则e为该图的割边。 求法:边(u,v) 不是割边,当且仅当边(u,v)在一个环内。因此所有不在环内的边就是割边,我们要找到它。对图进行Dfs,对每个节点盖上时间戳DfsN,Dfs的方式形成了一棵搜索 阅读全文
posted @ 2018-02-23 20:32 headboy2002 阅读(103) 评论(0) 推荐(0) 编辑
摘要: 正解:SPFA+DP 将POJ3463中maxDist(Target)由minDist(Target)+1改为minDist(Target+K)即可。判断0环,需要对每个节点建立下标为maxDist-minDist的Vis数组,若其被重复访问,则有0环,无解。 为何不能用Dijkstra? 本题有0 阅读全文
posted @ 2018-02-23 11:44 headboy2002 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 题目大意:求两点间最短路与长度为最短路长度+1的路径的条数之和。 方法1:最短路径+DP 首先求出ST间最短路径,然后根据递归式记忆化搜索(因此还要构造反向图)。 我们知道到达终点的路径长度最长为maxDist(T)=minDist(T)+1,而与终点相连的节点的路径长度最长为maxDist(T)- 阅读全文
posted @ 2018-02-22 21:21 headboy2002 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 题目大意:求图的严格次短路。 方法1: SPFA,同时求单源最短路径和单源次短路径。站在节点u上放松与其向量的v的次短路径时时,先尝试由u的最短路径放松,再尝试由u的次短路径放松(该两步并非非此即彼)。 由u的最短路径放松: 由u的次短路经放松: 完整代码: #include <cstdio> #i 阅读全文
posted @ 2018-02-22 00:02 headboy2002 阅读(240) 评论(0) 推荐(0) 编辑
摘要: 【倍增优化树上的暴力查询工作】 阅读全文
posted @ 2018-02-20 16:23 headboy2002 阅读(161) 评论(0) 推荐(1) 编辑
摘要: 题目大意:给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先。 整体步骤:1.使两个点深度相同;2.使两个点相同。 这两个步骤都可用倍增法进行优化。定义每个节点的Elder[i]为该节点的2^k(或者说是二进制中的1,10,100,1000...)辈祖先。求它时要利用性质:cur->Elder[ 阅读全文
posted @ 2018-02-20 11:00 headboy2002 阅读(181) 评论(0) 推荐(0) 编辑