图论
文章平均质量分 72
伍叁壹_
这个作者很懒,什么都没留下…
展开
-
P2999 [USACO10NOV]Chocolate Milk S 题解
前置知识 --> 拓扑排序这道题为什么要用拓扑排序呢?因据题意,每一个点奶的流量都有先后顺序,且顺序不得改动。重点在于本题入度,出度,队列等的运用。思路挤奶器:入度为 0,且可以最早入队列(因为它不受先后顺序的限制);混合器:混合器要放在每一个奶流都会经过的点,则该点的奶流量 = 总奶流量;while 入队出队操作:当队头的出度为 1 时,可以将之前记录下来的他的“子节点”操作之后,入队;答案统计:在将挤奶器入队时,统计总奶量,每一个挤奶器的奶量为 1, 并用 tot 统计,最后比较该点原创 2022-03-22 13:00:18 · 1341 阅读 · 0 评论 -
UVA1327 King‘s Quest 题解
笔者没 ac ,因为没绑定没提交。但在其他 OJ 上提交 ac 了,可以确保代码正确性。UVA1327 King’s Quest 传送门一道强连通分量的板子题。思路:最终可以满足条件的女孩 既要王子喜欢又可以被娶(也就是巫师那个名单) ,这不就类似强连通分量吗?只要王子喜欢的女孩和王子在同一个强连通分量里就都满足条件。这道题和板子的区别主要在于建边和答案输出,主要说说这俩。1. 建边:在王子到喜欢的女孩之间建边;在可以被娶女孩和王子之间建边。这些结合题目及思路,不难理解。2原创 2022-03-21 12:47:32 · 112 阅读 · 0 评论 -
UVA610 街的方向 题解
题目分析一道桥的题(比模板难一点吧)。我们要在无向图中选择一些边,使得当它们变为有向边时,该图仍能连通。与其思考选择哪些边去改变,不如考虑哪些边不可以改。很明显,在有向图中,如果桥变成了单向边,这幅图肯定不能连通(可结合桥的定义理解)。那么我们只需要找出桥,也就是不能更改的边,并把他们输出两次(题目要求),则剩下的边就都可以改变,就输出一次即可。代码实现我们以 Tarjan 找桥的模板代码为基础,来写这道题。(为什么要用 Tarjan 找桥就不用再多说了吧。)概述:很简单,是桥就不能改,不原创 2022-03-21 12:46:16 · 426 阅读 · 0 评论 -
LG-P2941 Surround the Islands S 题解
P2941 [USACO09FEB]Surround the Islands S 传送门感觉其他有些题解有点简略,wtcl,一开始理解不了题意,我现在就写篇详细点点的吧。题目分析我们最开始输入的 nnn 条边 (u,v)(u,v)(u,v) 都是可以直接以 0 费用从 u 到 v 的。也就是题目中的走路,即 u 和 v 是同一岛上的不同顶点。接着输入的是从第 i 个点乘船到达其他 i(包括 i 点自己)所需要的费用。求解概述:为了保证最小费用,我们当然是走路到达同一岛上的点,乘船到原创 2022-03-21 12:45:30 · 437 阅读 · 0 评论 -
P2321 [HNOI2006]潘多拉的宝盒 题解
思路我们要先找到所有的升级序列,找出所有的包含与被包含的关系,然后找到一条最长链,满足题目要求。如何找到所有的包含关系?遍历每一对盒子,对于二者,我们用 dfs 扫一遍,如果有一个盒子在一个节点输出了串,而另一个没有,那么这两者就不存在包含关系。反之,两者就存在包含关系。我们就可以建一条有向边,从包含者指向被包含者。为什么求最长链?易得,在一个强连通分量中,肯定是存在一条链的。所以,我们只需要把一个个强连通分量缩点,然后找到一条把超级点(强连通分量)串起来的最长的链即可。最终答案,原创 2022-03-21 12:43:56 · 143 阅读 · 0 评论 -
CF366D Dima and Trap Graph 题解
题意给定一张有 nnn 个节点,mmm 条边的无向图(可能有环或重边),对于每个节点 iii,有 lil_ili 和 rir_iri,定义在经过该节点后,只能携带于 lil_ili 和 rir_iri 之间的数。从编号为 1 的节点出发(初始时携带了所有自然数),到达编号为 nnn 的节点,求最后能携带最多的节点。若节点数相同,输出字典序小的那一组。若节点数为 0,输出 Nice work, Dima!。题解模拟赛的一道题。二分 + 图。二分本质:在数轴上找到一个临界点,即点的左边原创 2022-03-19 08:27:26 · 187 阅读 · 0 评论 -
LG-P3872 [TJOI2010]电影迷
传送门:P3872 [TJOI2010]电影迷以最大权闭合子图为基础,再加上一点小拓展。本题解主要是想细讲一下最大权闭合子图。最大权闭合子图1. 概念闭合子图:在原图 GGG 的闭合子图中,每一个节点,它在 GGG 中所能到达的所有节点都包含在这个子图中。最大权闭合子图:即原图 GGG 中点权之和最大的闭合子图。2. 运用目标:求一图的最大权闭合子图。<1>先建立一超级源点和超级汇点。对于每个带权值的节点:若节点为正,则与超级源点相连,流量为该点权值;反之原创 2022-03-19 08:21:27 · 305 阅读 · 0 评论 -
强连通分量较难例题【受欢迎的牛 + 最大半联通子图】
这几道题都是 Tarjan 和其他算法的综合,难度较大,含金量较高,特别是第二题。我的博客:关于 Tarjan 算法的入门博客。传送门 - 板子题 B3609 题解开始——例题一 受欢迎的牛传送门 - P2314 受欢迎的牛 G思路概述: Tarjan + 缩点 DAG + 出入度1. Tarjan在一个强连通分量中,很明显,所有奶牛都是互相喜欢的,所以我们分别求出每一个强连通分量,并记录下他们的 size 。2. 缩点 DAG我们把强连通分量看成一个超级点,并在相互之间建边。(图原创 2022-03-18 13:16:27 · 885 阅读 · 0 评论 -
CRB and Graph
Description一个连通,n 个顶点和 m 条边的无向图被给了 CRB。一对顶点 (u,v)(u,v)(u,v)(u 认证机构的任务是寻找每条边的关键对。帮助他!)Input有多个测试案例。输入的第一行包含一个整数 t,表示测试用例的数目。对于每一个测试案例:第一行包含两个整数 n,m 表示顶点数和边数。接下来的 m 行包含一个整数对 a 和 b,表示 a 和 b 之间一个无向边。1≤t≤121≤t≤121≤t≤121≤n,m≤1051≤n,m≤10^ 51≤n,m≤1051≤a,原创 2022-03-18 13:14:03 · 99 阅读 · 0 评论 -
二分图及相关问题整理
计算无权二分图的最大匹配匈牙利算法给定一个二分图,其左部点的个数为 nnn,右部点的个数为 mmm,边数为 eee,求其最大匹配的边数。左部点从 1 至 nnn 编号,右部点从 1 至 mmm 编号。法1:枚举每一个左部点 uuu,然后枚举该左部点连出的边,对于一个出点 vvv,如果它没有被先前的左部点匹配,那么直接将 uuu 匹配 vvv,否则尝试让 vvv 的“原配”左部点去匹配其他右部点,如果“原配”匹配到了其他点,那么将 uuu 匹配 vvv,否则 uuu 失配。(摘自扶苏题解)#inc原创 2022-02-12 16:29:33 · 366 阅读 · 0 评论 -
割点割边 + 点双边双 学习笔记
割点定义在一个无向图(强连通分量仅针对有向图)中,若去掉一个点 u,该图有两点不连通,则称点 u 为割点。点连通度:该连通(且无向)图的割点数量。求割点对于点 u:u 为一个根节点(把图看成树):因为他是根节点,所以它的入度为 0,那么只要它有两个及以上的孩子,那么它就是割点(去掉它了会有两个以上的连通块),chil>1chil>1chil>1。u 为子节点:若它的子节点 v 不能够不通过 u 连到 v 的边到 u 的祖先,则只有加上从 u 到 v 的边才能让 v 到原创 2022-02-12 16:33:22 · 602 阅读 · 0 评论 -
缩点算法学习笔记
缩点说说缩点,缩点可以算是强连通分量的一个小小的进阶。本博客也可以理解为 P3387 【模板】缩点 - 传送门 的题解。正片开始——一 题目分析求有向图上的一条路径,使该路径上点的权值和最大,输出和的最大值(可以重复经过点和边)。啊当然了,你可以使用 spfa 或者 dijkstra 以 ac 这道题,这里说说缩点的方法。首先,对于任何一个强连通分量里面,我们可以拿到所有的权值,所以我们将所有的强连通分量缩成一个个“超级点”,最后找到一条类似链的路径使这条“链”的权值最大。缩点,是我们在原创 2022-02-12 16:34:42 · 373 阅读 · 0 评论 -
强连通分量算法学习笔记
强连通分量更好阅读体验请点击此链接先推荐几道综合性较强的题目,详细题解我写了,持续更新中。我的博客:整理 + 题解P2341 [USACO03FALL][HAOI2006]受欢迎的牛 GP2272 [ZJOI2007]最大半连通子图强连通分量( strongly connected components ),可以理解为存在一条回路使得初始点又能回到初始点。有两种算法, 这里分享的是 Tarjan (我用前向星存图)。1. 基本概念:Tarjan 基于对图深搜的算法,每个强连通分量为搜原创 2022-02-12 16:36:11 · 592 阅读 · 0 评论