图论
文章平均质量分 87
_7许
%
展开
-
T176273 Hazardous【dsu on tree】
题目链接题意:给定一棵 nnn 个结点的树,根固定为 111,每个结点有一个颜色。对于结点 uuu,它的值定义为子树 uuu 中任意两个相同颜色的结点的距离之和。我们需要得到每棵子树的值并输出。思路:对于子树 uuu,我们假设它有 xxx 个儿子,我们假定这些儿子的编号为 1,2,3,...,x1, 2, 3, ..., x1,2,3,...,x我们假设每个结点 iii 的颜色是 c[i]c[i]c[i],深度是 d[i]d[i]d[i]我们统计一个后缀和 sum[i]sum[i]sum[i原创 2021-04-27 20:14:26 · 183 阅读 · 0 评论 -
F. Strange Memory
题目链接题意:给定一个结点个数为 nnn 的根为 111 的有根树,每个结点有一个权值 a[i]a[ i ]a[i]。我们需要找到所有满足 KaTeX parse error: Can't use function '\^' in math mode at position 6: a[u] \̲^̲{} a[v] == a[lc… 的点对 u,v{u, v}u,v ,统计所有这些点对 KaTeX parse error: Can't use function '\^' in math mode at p原创 2020-11-26 21:59:53 · 556 阅读 · 0 评论 -
树链剖分模板
P3384 【模板】轻重链剖分题意已知一棵包含 N 个结点的树(连通且无环),每个节点上包含一个数值,需要支持以下操作:操作 1: 格式: 1 x y z 表示将树从 x 到 y 结点最短路径上所有节点的值都加上 z。操作 2: 格式: 2 x y 表示求树从 x 到 y 结点最短路径上所有节点的值之和。操作 3: 格式: 3 x z 表示将以 x 为根节点的子树内所有节点值都加上 z。操作 4: 格式: 4 x 表示求以 x 为根节点的子树内所有节点值之和。思路先将树轻重链剖分后,遍历整棵原创 2020-11-01 20:09:36 · 127 阅读 · 0 评论 -
E. Even Degree 【欧拉回路】
题目链接题意给一张图,当结点u,v的度不都是奇数时,我们可以删掉结点u,v之间的边。问:最多能删掉多少条边,并按照删除的顺序输出边的序号。题目不保证图是连通的,但是保证所有点的度在初始时都为偶数,也就是保证每个连通块都是一个欧拉回路。思路对于一个欧拉回路,我们先假装删除一条边让其变成一个欧拉通路,此时存在两个奇数度点。我们选择一个作为起点,一个作为终点。我们 dfs 从起点遍历到终点,在回溯时才往栈中存边,那么从栈底到栈顶就是正确的合法路径。问题是怎么找到这个路径呢?在欧拉通路中删边时,我原创 2020-10-17 10:32:08 · 1769 阅读 · 4 评论 -
POJ - 1087【匈牙利匹配】
A Plug for UNIX题意:房间里有n个不同的插口,有m个设备,每个设备对应一种插口。有k个插口转换器(a, b:表示该转换器可以将插口b转为a),转换器可以插在对应的初始的n个插口,也可以插在对应的转换器上。要使得设备匹配插口最大,求未能匹配的设备数量。(转换器的数量无限)思路:如果一个设备对应的插口x可以由转换器级联得到,那么该设备实际上是对应了所有和x在一个网络中的插口。所以我们根据所有k组转换器信息做成一个有向图(由a指向b),这样的话我们从每个设备对应的插口进行深搜,即可得到设备原创 2020-06-17 20:14:31 · 137 阅读 · 0 评论 -
U41492 树上数颜色【dsu on tree】
题目链接题意:有一棵以 111 为根结点的树,树上每个结点有一个颜色,多组询问:问以 uuu 为根的子树上共有多少种不同的颜色。解决该题,最暴力的做法就是对于每一棵子树都dfs一遍统计出答案,统计完清空:O(n2)O(n^2)O(n2)。但“听说”可以用dsu on tree优化:dsu on tree [ O(nlogn)O(nlogn)O(nlogn) ]统计以结点 uuu 为根结点...原创 2020-04-04 14:45:52 · 671 阅读 · 0 评论 -
HDU 6598 Harmonious Army【最小割_网络流建图】
题目链接题意:n个士兵,m组信息:u v a b c。对于士兵u v:如果都是战士(Warrior),那么军队power增加a;如果都是法师(Mage),那么军队power增加c;如果一个是战士,一个是法师,那么军队power增加b. 其中b=a/4+c/3b = a/4+c/3b=a/4+c/3. 问军队power最大是多少?思路如果每个士兵可以选择两个职位,那么军队power=...原创 2020-03-09 20:37:39 · 214 阅读 · 0 评论 -
排列问题【DFS+enum】
题目:抽屉里里有红、黄、蓝、白、黑 5 种颜色的若干个球。每次从抽屉中取出 3 个球,问得到 3 种不同色的球的可能取法,编程输出每种排列的情况。【要求用枚举类型】(答案提示:60 种)思路:DFS深搜,输出答案代码#include<iostream>#include<cstdio>#include<vector>using names...原创 2020-03-03 14:10:09 · 144 阅读 · 0 评论 -
P4126 [AHOI2009]最小割 【最小割+tarjan(SCC)】
P4126 [AHOI2009]最小割题意给一个有向图。两问某条边是不是一定是最小割边 某条边是不是有可能是最小割边思路跑完最大流的残量图中 如果某条正向边<u, v>的剩余流量为0,并且uv不在一个强连通分量中,那么这个边可能是最小割边。 在可能是最小割的条件下,如果u和源点s在同一个强连通分量中,且v和汇点t在同一个强连通分量中,那么这个边一定是...原创 2020-03-01 21:56:30 · 165 阅读 · 0 评论 -
收集纸片【状压bfs】
收集纸片题目描述我们把房间按照笛卡尔坐标系进行建模之后,每个点就有了一个坐标。假设现在房子里有些纸片需要被收集,收集完纸片你还要回归到原来的位置,你需要制定一个策略来使得自己行走的距离最短。你只能沿着 x 轴或 y 轴方向移动,从位置 (i,j) 移动到相邻位置(i+1,j),(i-1,j),(i,j+1) 或 (i,j-1) 距离增加 1。输入描述:在第一行中给出一个...原创 2020-02-23 19:58:47 · 210 阅读 · 0 评论 -
Flow Problem [HDU - 3549] 【最大流模板_Dinic(当前弧优化)_EK】
卡了?!我卡了EK?!QAQ!!!!蒟蒻的EK模板更新残余网络的时候找对应的边直接+1了??还是没有理解透彻。其实增广路中的正边可能是“反边”的QAQ,所以还是要用异或得到对应的边才可QAQ!前边过的题那么水??写的都是+1,还都过了……原创 2020-02-22 17:16:40 · 140 阅读 · 0 评论 -
Drainage Ditches [POJ - 1273] 【最大流模板_Dinic_EK】
POJ - 1273Dinic算法#include <iostream>#include <cstdio>#include <cstring>#include <queue>#define INF 0x3f3f3f3fusing namespace std;inline int read(){ int x = 0,...原创 2020-02-22 16:50:58 · 117 阅读 · 0 评论 -
P1343 地震逃生【最大流_EK算法+Dinic解】
模板题哒哒哒!这题怎么判的那么慢,等了好几分钟,结果RE!我???……看了眼题面,零流的时候要特判,不然除数为0了啊QAQ原创 2020-02-22 12:15:51 · 141 阅读 · 0 评论 -
P3376 【模板】网络最大流【EK算法+Dinic算法解】
EK算法+Dinic算法原创 2020-02-22 11:07:12 · 374 阅读 · 0 评论 -
P2341 【模板】强连通分量 / [HAOI2006]受欢迎的牛【Tarjan】
P2341 【模板】强连通分量 / [HAOI2006]受欢迎的牛这道题的题解因为要找到所有的奶牛明星,奶牛明星就是所有奶牛都喜欢的那个奶牛!首先,很明显的是:一个强连通分量中所有结点都相互喜欢!所以我们将图中所有的强连通分量缩聚成一个大结点!那么,这些大结点中有指向关系。如果某个大结点的出度为0,那么说明所有奶牛都喜欢它,但是它没有喜欢的人!那么这个大结点就是明星奶牛的聚集地啊...原创 2020-02-15 20:20:36 · 160 阅读 · 0 评论 -
【经典】【并查集+拓扑】HDU-1811 Rank of Tetris
HDU-1811 Rank of Tetris题意:给N个人排序,序号[0, N - 1]给出M组rating关系:’>’ ‘<’ ‘=’,其中如果两个人的rating相等,那么序号越大名次越靠前(即可以确定两者关系)如果uncertain和conflict同时存在,判定为conflict问根据输入所给信息能否确定这N个人的排名思路:如果rating相等,那就用并查...原创 2019-11-16 10:20:30 · 112 阅读 · 0 评论 -
【BFS】 计蒜客T1214
计蒜客T1214就是一个带状态的简单搜索。 我真的吐了,比赛的时候MLE了n发,结果就差一个inque数组我就过了……因为没有判断相同点的相同状态有没有在队列中,所以爆了。我吐了我吐了我吐了我真的吐了……qaq 总而言之我太菜了。这个题疯狂MLE。想到是队列出了问题。但是愣死就是没想到再加一个数组。太久没做搜索了。 队长说的没错,连大一的都不如。#include <iostr...原创 2020-01-21 13:36:43 · 349 阅读 · 2 评论 -
【两点间路径边权最大差值最小化】HDU 1598 find the most comfortable road
HDU 1598 find the most comfortable road枚举最小边权,找MST,在这个过程中,当起点和终点连在一起之后,就是一个差值枚举完所有的边,找到差值最小这个过程中总是可以找到使得两点间的边权最大差值最小的路径,没有反例就是证明#include <iostream>#include <cstdio>#include <alg...原创 2019-10-31 22:00:50 · 293 阅读 · 0 评论 -
【判断MST的唯一性】POJ 1679 The Unique MST
POJ 1679 The Unique MST这道题非常非常非常非常非常的坑不管怎么样吧,过了n久终于过了,而且还很迷。说说AC思路:我们将每条边的序号记录在id里第一次,我们将边权升序,id降序,找到MST,记录MST所用的边的序号第二次,我们将边权升序,id升序,找到MST,记录MST所用的边的序号如果两次mst的结果不同,说明没有MST唯一如果相同,那么我们将两次找到的MS...原创 2019-10-28 20:24:31 · 619 阅读 · 0 评论 -
【MST-Prime】POJ 3625 Building Roads
POJ 3625 Building Roads模板#include <iostream>#include <cstdio>#include <algorithm>#include <queue>#include <cmath>#include <cstring>#include <string>#...原创 2019-09-22 21:18:45 · 87 阅读 · 0 评论 -
【MST-Kruskal】POJ 1861 Network
POJ 1861 Network题意:给出所有可行的路径的信息(两个坐标点和路径长度),我们要从这幅图中找出一个连通图,使所有的点都能够直接或间接的连通。限制条件是要保证最大的路径长度最小,以及所有点的连通即可。思路:这道题是Special Judge。题目中的两点限制并没有说一定是MST,只不过MST是一种解法,当然只要保证两种限制的条件即正确答案。剩下的话就是MST的模板。...原创 2019-09-22 16:27:57 · 117 阅读 · 0 评论 -
【MST-Prime】POJ 2560 Freckles
POJ 2560 Freckles给出所有点的坐标,然后让求将这些点连起来需要的最少的路径长度。先将每两点之间的距离算出来存起来,然后再用Prime求最小生成树就好了。#include <iostream>#include <cstdio>#include <algorithm>#include <queue>#include &l...原创 2019-09-20 15:14:29 · 123 阅读 · 0 评论 -
【MST-Kruskal】POJ 2377 Bad Cowtractors
POJ 2377 Bad Cowtractors#include <iostream>#include <cstdio>#include <algorithm>#include <queue>#include <cmath>#include <cstring>#include <string>#in...原创 2019-09-17 20:04:33 · 85 阅读 · 0 评论 -
【MST-Prime】POJ 1789 Truck History
POJ 1789 Truck HistoryThey defined the distance of truck types as the number of positions with different letters in truck type codes.(卡题面,QAQ,读不下去不想读,后来发现就这一句重要,距离就是两个字符串对应位置上不同字母的个数)然后就是最小生成树的模板了。...原创 2019-09-05 20:51:34 · 210 阅读 · 0 评论 -
【MST-Prime】POJ 1258 Agri-Net
POJ 1258 Agri-NetMST模板题Prime算法:跑点,维护点到树上的最短距离,跟最短路有本质区别。#include <iostream>#include <cstdio>#include <algorithm>#include <queue>#include <cmath>#include <cstri...原创 2019-09-04 17:12:44 · 127 阅读 · 0 评论 -
【MST-Kruskal】HDU 3371 Connect the Cities
HDU 3371 Connect the Cities题意有n个城市,m条可建造道路(分别对应各自的建造费用),k 组城市相互连通。让我们判断这n个城市是不是能够连通,能就输出最少的建造费用。思路Kruskal我们将互相连通的点Merge起来,然后将可建造的道路按照权值排序,从小到大取,看是不是能够构成一棵树,如果不能就说明祖先结点不止一个。(杭电交C++给我T了,然后交G++...原创 2019-08-28 20:50:05 · 125 阅读 · 0 评论 -
【MST-prime】HDU 1102 Constructing Roads
【MST-prime】HDU 1102 Constructing Roads题意以邻接矩阵的形式给出各点之间的距离,然后再给出Q条已经建好的道路,让我们求最小的建造路径的成本使得各点间相互贯通。思路因为每两个点中间的边都给了,所以这是一幅稠密图,但是N的范围在100内,所以我们采用prime算法。prime算法(历经暑假放假已经完全忘光了QAQ)我们需要做的是维护点到树上的...原创 2019-08-28 19:14:29 · 141 阅读 · 0 评论 -
【判断是不是树】HDU 1272 小希的迷宫
HDU 1272#include <iostream>#include <algorithm>#include <cstdio>#include <cmath>#include <cstring>#include <string>#include <queue>#include <vector...原创 2019-08-26 21:21:03 · 80 阅读 · 0 评论 -
【判断是否为树】HDU 1325 Is It A Tree?
HDU 1325 Is It A Tree?题意:给定多组有向边的起点和终点(结点的标号不一定是连续的,也不一定是从1开始,是随机的),判断这些边能不能组成一颗树。给定条件:(1)只有一个节点是根节点,并且除了根节点之外的所有的节点只有一条边指向它。(2)#include <iostream>#include <algorithm>#include <cst...原创 2019-08-26 20:58:12 · 165 阅读 · 0 评论 -
【最短路dij】牛客_免费机票
牛客_免费机票题意:求一张无向有权图中从起点到终点的最短路。(其中有权值为0的 k 条边,但是只能走最多一条)思路:我们维护普通边中起点到各点的最短路,以及终点到各点的最短路。然后我们跑一个for(1 -> k)的循环(跑权值为0的边)。如果用上这条边比之前的dis[ s ][ e ]更短,那么我们就用上这条边;否则就不用,用flag来标记一下。【这样可以保证只用一个免费机票】Co...原创 2019-08-02 15:50:15 · 156 阅读 · 0 评论 -
【最短路-SPFA/Dijkstra】Codeforces Round #333 (Div. 2) C. The Two Routes
Codeforces Round #333 (Div. 2) C. The Two Routes题意:有V个村庄,每两个村庄间都有路(铁路或公路,铁路和公路不重合,也就是说有铁路就没有公路),其中铁路有E条,让我们求从村庄1到村庄V的最短路径。如果沿着铁路走到不了或者沿着公路走到不了都输出-1,如果沿着铁路走和沿着公路走其各自最短路径的时间不一样,那就输出较大者。所有路径的边权都为1。思路:...原创 2019-07-21 16:58:32 · 123 阅读 · 0 评论 -
【BFS+剪枝优化】Codeforces Round #442 (Div. 2) D. Olya and Energy Drinks
Codeforces Round #442 (Div. 2) D. Olya and Energy Drinks题意:地图上只有可走格和不可走格,我们从(sx,sy)走到(ex,ey),每秒最多走k步,问最少需要多少时间。思路:就是bfs跑,但是要注意进了队的点是否走过一个格,是一定不能影响别的点是不是选择走这一格的,所以不能直接入队就vis[][]=1,这样可能损失最优解。所以我们现在...原创 2019-07-20 20:22:35 · 130 阅读 · 0 评论 -
【最小生成树-Kruskal】POJ 3522 Slim Span
POJ 3522 Slim Span#include <iostream>#include <cstdio>#include <algorithm>#include <queue>#include <cmath>#include <cstring>#include <string>#include ...原创 2019-07-19 20:30:59 · 133 阅读 · 0 评论 -
【二分图-匈牙利算法】HDU 2063 过山车
详解下面是模板题:HDU 2063 过山车#include <iostream>#include <cstdio>#include <algorithm>#include <queue>#include <cmath>#include <cstring>#include <string>#inc...原创 2019-07-18 21:12:39 · 130 阅读 · 2 评论 -
【拓扑排序+链式前向星+dp】SWUST Power OJ 2842 套娃问题
SWUST Power OJ 2842 套娃问题题意:有n个套娃(三个属性长宽高l,w,h),ZQ的身高为m(ZQ可翻转),他要可以站在最里层的套娃里,也就是强制性要求套娃的高大于m。问最多有多少层的套娃。【一个俄罗斯套娃必须严格小于另一个才能放入其中】思路:对套娃的长宽高排序,使得l>w>h建边构图DAG:跑两个for循环,如果tw[ i ]严格小于tw[ j ],即...原创 2019-07-18 20:11:59 · 269 阅读 · 0 评论 -
【最小生成树-Kruskal】HDU 1102 Constructing Roads
HDU 1102 Constructing Roads题意:有V个结点,每两个结点间有一条边,以邻接矩阵的形式输入。已经存在的路径有E条,并且输入这些路径的两个结点(起始点)。问:在已经存在的边的基础上使所有点连通的最小路径是多少。思路:将已经存在的路径的起始点放在一棵树上,我们要考虑到存在的路径中有环,所以记录下已经存在的树枝的数量exist,然后按照kruskal的模板走就行了,只是边个...原创 2019-07-18 15:32:02 · 114 阅读 · 0 评论 -
【最小生成树-kruskal】HDU 1233 还是畅通工程
HDU 1233 还是畅通工程#include <iostream>#include <cstdio>#include <algorithm>#include <queue>#include <cmath>#include <cstring>#include <string>#include <...原创 2019-07-18 11:42:32 · 128 阅读 · 0 评论 -
【最小生成树-Prim】HDU 1863 畅通工程
Prime????Prim!!!!谁是罪魁祸首!!教我教错了!!!直到学了软基才知道这个算法是叫prim,我就说为什么和质数prime是一个单词wwww,我太难了原创 2019-07-17 20:55:11 · 197 阅读 · 0 评论 -
【最小生成树-Kruskal】HDU 1301 Jungle Roads
Jungle Roads#include <iostream>#include <cstdio>#include <algorithm>#include <queue>#include <cmath>#include <cstring>#include <string>#include <ve...原创 2019-07-17 20:36:43 · 103 阅读 · 0 评论 -
【最短路-SPFA】HDU 2544 最短路
SPFA(Shortest Path Faster Algorithm)简概:将松弛过的点入队,不断更新dis[ i ] ( i 结点到起点最短路径的估计值),维护它为当前最小。将起点入队,进行松弛操作,更新dis[ ],被松弛的点(这里肯定没在队内)入队,起点出队取队首点进行松弛操作,更新dis[ ],被松弛的点如果没在队内,入队,队首点出队重复这样的操作,直到所有点都进行了松弛操...原创 2019-07-17 16:25:01 · 84 阅读 · 0 评论