强联通_点边双联通_桥割点
Anxdada
多读书多看报, 少吃零食多睡觉
展开
-
2017 Multi-University Training Contest - Team 1 1006 【思维+强联通找环】
传送门 //这道题真的好, 结合了联通分量和置换群和查分约束的思想, 我还是太菜了啊, 想不到啊. //题意就是给你一个方程, f(i)=bf(ai) , i 从给所给的序列中依次赋值, 问共有多少中方式使得这个方程成立. 第一分样例可以解释为: 110 111 001 000思路:实际上就是从a集合到b集合的映射的组合,a中的一个循环节是一个整体,如果b中循环节的长度和a循环节的长度原创 2017-07-27 11:02:37 · 389 阅读 · 0 评论 -
POJ 2942 Knights of the Round Table 【点双联通 + 二分图染色法判奇环】
传送门 亚瑟王要在圆桌上召开骑士会议,为了不引发骑士之间的冲突,并且能够让会议的议题有令人满意的结果,每次开会前都必须对出席会议的骑士有如下要求:1、 相互憎恨的两个骑士不能坐在直接相邻的2个位置;2、 出席会议的骑士数必须是奇数,这是为了让投票表决议题时都能有结果。如果出现有某些骑士无法出席所有会议(例如这个骑士憎恨所有的其他骑士),则亚瑟王为了世界和平会强制把他剔除出骑士团。...原创 2018-02-24 15:01:13 · 396 阅读 · 0 评论 -
HDU 3394 Railway 【点双联通】
传送门 // 有一个公园有n个景点,公园的管理员准备修建m条道路,并且安排一些形成回路的参观路线。如果一条道路被多条道路公用,那么这条路是冲突的;如果一条道路没在任何一个回路内,那么这条路是不冲突的问分别有多少条有冲突的路和没有冲突的路思路: 如果某条边有冲突, 那么它至少存在于两个环中, 也就是我们要判断图中的环, 其边于点的关系: 边数 = 点数 : 一个环 边数 > 点数 : >一个环原创 2018-02-24 14:51:01 · 417 阅读 · 0 评论 -
HDU 4738 Caocao's Bridges 【桥】
传送门 // 给定一幅图, 问能够通过炸掉一条边使得原图的联通快数量变大. 边上有权值, 派去炸桥的人数一定要大于等于桥的权值. 问最少需要去几个人. 无解输出-1.那么很明显就是把图中所有的桥都求出来然后取最小即可. 记住几个坑点. 1: 如果图本来就不连通, 那么输出0 2: 如果桥上没有人, 那么应该输出1, 至少要去一个人背炸药.AC Codeconst int mod = 1e9+7原创 2018-02-24 14:45:57 · 214 阅读 · 0 评论 -
连通图板子合集(以Tarjan为主)
//解释下low和dfn在dfs树中的意义, dfn[v]是在dfs中v是第几个遍历的点, low[v]表示v以及v所有的后代直接指出去的边可以到达的dfn值最小的点的dfn值.1: 强联通/边双联通 注意 : 单点也算是一个强联通/边双联通分量 a. 强联通: 处于一个强联通分量的点之间可以相互到达 首先只有在有向图中才有强联通. (因为大部分用来缩点, 所以用的vector存图, 重...原创 2017-07-17 15:37:32 · 539 阅读 · 0 评论 -
poj 3352 Road Construction 【边双连通分量缩点 + 加边定理】
传送门 题意: 一个无向图至少加多少条边让该图变成边双连通分量. //关键的点 : 缩点成树后, 判断度为1的点有多少个, 则满足题意要加的边数就是(du[1]+1)/2 条边(这个是多画图来推推). 注意处理细节就是了 AC Codeconst int maxn=1e3+5;int dfn[maxn], low[maxn], bel[maxn];int in[maxn];v...原创 2017-07-21 00:52:44 · 487 阅读 · 0 评论 -
2018年全国多校算法寒假训练营练习比赛(第四场)E 题 通知小弟 强联通
传送门 // 中文就不说题意了, 可以看出图中可能有环, 于是我们先缩环, 变成DAG, 然后我们的目标就是缩环后的DAG中那些入度为0的点了, 我们必须都要通知这些点, 所以只要有一个不能通知就是no, 否则就是入度为0的点数. 缩环用强联通, 然后在缩环的过程中要判断下该点是否可以被HA通知, 然后在标记该scc即可.AC Codeconst int maxn = 5e2+5;int df原创 2018-02-13 22:13:39 · 339 阅读 · 0 评论 -
POJ - 1236 Network of Schools 【有向图至少加多少条边变成强联通图】
传送门 //题意: 给定一幅有向图, 问: 1: 至少需要给几个人传递消息, 可以使图中任意点可以收到消息. 2: 至少加多少条边, 使得原图变成一幅强联通图. //思路: 这个就很简单了, 就是一个水题. 随便分析一下就知道了. 对应答案就是缩完点后的图中入度为0的点数, max(入度为0的点数, 初度为0的点数). 注意一个坑点就是当缩完点后只有一个点时, 需要特判答案.AC Cod原创 2017-09-10 23:24:13 · 583 阅读 · 0 评论 -
HDU --- 6165 FFF at Valentine 多校第九场 【强联通缩点 + 维护拓扑序】
传送门 //题意 : 给出一幅有向图, 问是否图中任意两点都可以到达(如 1,5 如果1不能到5, 5可以到1, 那么也算1,5可以到达) //思路 : 直接强联通缩点, 然后维护一个入度为0的拓扑序, 如果某一次入度为0的点>=2了, 那么这些点之间就不能到达, 就输出NO了. 所以多画几幅图就可以知道了. 比赛的时候想了挺久的…. 太菜了.AC Code/** @Cain*/con原创 2017-08-22 18:45:58 · 729 阅读 · 0 评论 -
HDU --- 3861 The King’s Problem 【强联通缩点 + 最小路径覆盖】
题意:把城市至少分成几个州,要满足下列三个条件 1. A能到B,B能到A,那么A,B一定要在一起 . 2. 一个城市只能被划分到一个州里 . 3. 在一个州里的城市,任意2点之间必须有路径 . 对于条件1,就是说强连通的必须在一起,所以用Tarjan进行缩点,然后,条件2,3就是求DAG最小路径覆盖.(有向图的最小路径覆盖 = 顶点数-最大匹配) //对于条件 2 , 3 在同一个原创 2017-07-21 19:43:40 · 453 阅读 · 0 评论 -
Gym - 100676H Capital City【强联通缩点 + 树的直径】
传送门 //思路 : 先根据题意知道肯定是先要强联通缩点, 然后分析题意知道, 要使最远的距离的最小, 就要想到树的直径. 因为树的直径端点到树上的点的距离才最远, 然后要最小那么就枚举一下就行了. AC Code/** @Cain*/const int maxn=2e5+5;int dfn[maxn],low[maxn],bel[maxn];int head[maxn],cut[maxn原创 2017-07-21 20:17:45 · 496 阅读 · 0 评论 -
牛客练习赛 25 E题 定向 【桥 + 思维】 无向图定方向变强连通图
传送门 题意: 给定一个无向图, 然后你要给这幅图每条边加上一个方向, 使得这个图是有向图强连通思路: 关键在于如何判断无解的情况, 如果能保证当前的图有解, 那么直接dfs一下就可以出答案. 仔细想想知道. 其实就是判断一下当前这幅图是否有”桥” , 联通分量的定义的桥, 如果有桥则一定无解, 否则就有解, 然后dfs一下就可以得到答案了. 细节请看代码 AC Codeconst i...原创 2018-08-25 00:03:06 · 790 阅读 · 0 评论