图论
Master.Yi
学习他人,提升自己;
提升自己,帮助他人。
展开
-
UOJ#551【UNR #4】校园闲逛 【多项式好题(雾)】
题目描述Linknnn 个点 mmm 条边的无向带权图,1≤1\le1≤ 边权 ≤V\le V≤V,QQQ 次询问,从 xxx 到 yyy 有多少条权值和为 www 的路径,路径可以经过重复边和重复点。1≤n≤8,0≤m≤3∗105,1≤V≤65000,0≤Q≤100001\le n\le 8, 0\le m\le 3*10^5,1\le V\le65000,0\le Q\le 100001≤n≤8,0≤m≤3∗105,1≤V≤65000,0≤Q≤10000题目分析暴力 DP:dp[i][j][v原创 2020-08-13 08:01:42 · 379 阅读 · 0 评论 -
矩阵树定理
求 生成树边权之积 的和普通:度数矩阵 - 邻接矩阵树形图:内向树(指向根,根出度为0):出度矩阵 - 邻接矩阵外向树(根往外,根入度为0):入度矩阵 - 邻接矩阵原创 2020-08-02 15:17:06 · 223 阅读 · 0 评论 -
20200723 T3 图【平面图环内点数】(CF223E Planar Graph)
题目描述给一张连通平面图,每次询问给出一个环(由给出的点组成),问环内的点数n≤105,m≤3∗105,∑circle≤3∗105n\le10^5,m\le3*10^5,\sum circle\le3*10^5n≤105,m≤3∗105,∑circle≤3∗105题目分析写完代码受到精神污染的我直接截Freopen的图进入环的点 = 父边连到环上的在环外的点的子树大小出环的点个数 = 父边在环外的环上的点的子树大小当前后两条边的极角区间跨越Pi时,用全集减去补集会好算很多。写完之后看Sh原创 2020-07-23 19:41:51 · 416 阅读 · 0 评论 -
20200710 图论(睿智题
AT2668 [AGC017E] Jigsaw把积木看做点,能否互补看做边,边数过多。经过转化,把左接地和右接地分别用正负表示,这样互补就变成了在同一个点,于是积木可以看做一条左边向右边对应点的连边,一条正点开始、负点结束的路径就对应了左接地,中间互补,右接地的摆放方案。于是现在相当于是问能否把所有的边拆成若干条正点开始,负点结束的路径。首先有两个必要条件:正点的出度>入度,负点的入度>出度。我们新建一个超级源点,源点向正点连 出度-入度 条边,负点向源点连 入度-出度条边。那么一条原创 2020-07-11 08:46:12 · 258 阅读 · 0 评论 -
HDU3446 daizhenyang s chess【棋盘走路博弈问题】
前置知识:棋盘走路博弈问题例:LOJ#6033. 「雅礼集训 2017 Day2」棋盘游戏问题描述:棋盘上有一个棋子,两个人轮流走,每次可以往相邻四个方向走,不能碰到障碍或已经走过的点,不能走的人输,问先手是否必胜。分析:首先将棋盘黑白染色形成二分图,然后将可以互相到达的格子连边。如果这个二分图有完美匹配,那么先手走匹配边,后手只能走非匹配边,先手必胜。如果没有完美匹配,那么看起点是否一定在最大匹配中(二分图最大匹配关键点):如果起点一定在最大匹配中,那么先手走匹配边,后手只能走非匹配边,如原创 2020-06-10 14:27:07 · 432 阅读 · 0 评论 -
一般图最大匹配(带花树算法)
强烈推荐2015年集训队论文中陈胤伯的《浅谈图的匹配算法及其应用》,里面对匹配的性质及各类匹配算法都有很清晰的讲解。以下的内容只是读完论文后我的一些体会。求最大匹配的过程就是在求一条从未匹配点出发走到另一个未匹配点,并且路径是匹配边与非匹配边交替的简单路径。在二分图中,根据dfs/bfs的过程,我们可以画出一棵交错树,树中的边匹配边与非匹配边交替:容易发现树中的白点都是被匹配边“拉入”树中...原创 2020-05-08 16:22:11 · 841 阅读 · 0 评论 -
洛谷P3783 [SDOI2017]天才黑客【前缀和/后缀和优化建图】
题目描述:n个点,m条单向边(可能有重边,自环),保证1号点可以到任意点,一棵大小为k的字典树,每条边对应一个字符串(字典树中的某个节点)和一个代价ci。从边u经过点x紧接着走边v会有额外代价|LCP(u对应的字符串,v对应的字符串)|,即u,v在字典树上的对应的点的lca的深度。求1号点走到2,3…n号点的最小代价。n,m≤50000,k≤20000n,m\le50000,k\le2000...原创 2020-01-15 22:53:48 · 376 阅读 · 0 评论 -
最小环 (OI-wiki笔记)
OI-wiki太强啦!!!补充:求经过x的最小环可以求不经过x下x邻接点中任意两点的最短距离,用floyd O(n3)O(n^3)O(n3)邻接点最短距离可以改为二进制分组后Dijkstra,O((n+m)logmlogn)O((n+m)\log m\log n)O((n+m)logmlogn),或者完全图O(n2logn)O(n^2\log n)O(n2logn)更好的方法是求以...原创 2019-12-17 12:10:49 · 603 阅读 · 0 评论 -
[GXOI/GZOI2019]旅行者【k点最短路最小值】
题目描述:n个点m条有向边,给定k个点,求两两最短路的最小值。n<=100000,m<=500000.题目分析:很棒的一道题。首先是比较正规的思路,按编号二进制分组跑最短路,一部分作为起点,另一部分作为终点。由于是有向图,二进制分组要分两遍。然后是比较容易想到但是很玄学的优化思路,就是在枚举每个点作起点跑最短路时只拓展在已经求出的答案范围内的点,并且在Dijkstra确定了...原创 2019-12-16 20:01:56 · 282 阅读 · 0 评论 -
欧拉回路与欧拉通路存在性的充要条件及其证明
转载自https://www.cnblogs.com/xpjiang/p/4396106.html定理1:连通多重图中存在欧拉回路当且仅当图中所有顶点的度数为偶数。首先,我们来证明充分性,即存在欧拉回路则图中的所有顶点的度数必然为偶数。在图中任取一点,以该点作为起点,沿着欧拉回路走,当前顶点的出度为1,然后经过其它的顶点,注意到如果欧拉路径经过一个顶点(包括起点),它必然离开这个点,这样出入度...转载 2019-12-09 21:28:07 · 2515 阅读 · 0 评论 -
BZOJ3237: [Ahoi2013]连通图【分治+回退并查集(类似于线段树分治)】
题目描述:数据范围不是题面中的,是这个:N<=100000 M<=200000 K<=100000题目分析:查询连通性可以用并查集的size,如果siz[find(1)]==总点数则图连通,反之不连通。然而并查集并不支持删边,但是它支持加边以及按加边顺序回退,这就让我们想到了线段树形状的可回退结构:分治。设cdq(l,r)cdq(l,r)cdq(l,r)表示解决区间...原创 2019-10-06 21:38:09 · 186 阅读 · 0 评论 -
CSP-S模拟赛20190921 T3 御神渡【分治求异色点之间的凸包】
题目描述:N≤105N\le10^5N≤105题目分析:边(i,j)(i,j)(i,j)的权值是Ci+Cj−Ai∗AjC_i+C_j-A_i*A_jCi+Cj−Ai∗Aj,本质上是最小生成树问题。但是n≤105n\le10^5n≤105。不难用反证法证明一个集合向外的所有边中最小的边一定在最小生成树中,基于这个基本性质,我们考虑与一个点相连的所有边中的最小值。令z=Ci+Cj...原创 2019-09-22 22:22:54 · 338 阅读 · 0 评论 -
BZOJ1924: [Sdoi2010]所驼门王的宝藏【优化连边】
题目描述:n<=100000,R、C<=1000000题目分析:如果暴力连边,之后就是tarjan缩点拓扑排序求最长路。但是暴力连边是O(n2)O(n^2)O(n2)的,考虑优化。考虑同一行的横天门所能,它们可以相互到达,所以只需要让它们连成一个环就可以了,然后让第一个横天门向这一行的非横天门连边,这样是题意的等价表达,此行的任意横天门可以到达所有非横天门,并且这样的连边数...原创 2019-09-14 21:09:51 · 162 阅读 · 0 评论 -
BZOJ2638: 黑白染色【01BFS】
题目描述:你有一个n*m的矩形,一开始所有格子都是白色,然后给出一个目标状态的矩形,有的地方是白色,有的地方是黑色,你每次可以选择一个连通块(四连通块,且不要求颜色一样)进行染色操作(染成白色或者黑色)。问最少操作次数。题目分析:(并不是很懂 )枚举最后一次修改的连通块中的一个点,想象一下还原染色的过程,可以感觉到它是一层一层染色的(上一次染色的集合一定可以包含此次的集合),那么如果一个...原创 2019-09-14 10:35:47 · 316 阅读 · 0 评论 -
POJ3539 Elevator 【同余类最短路】
题目描述:电梯有n层,开始在1层,每次可以向上升a,b,c层,问可以到达的层数。n<=1018,1<=a,b,c<=100000题目分析:把楼层对a取模,按余数分成a类。同一余数的楼层只要最低的那层可达,其它所有都可达。所以只需要考虑上升b,c层,求出模a余i的可达的最低的楼层。设dis[i]dis[i]dis[i]表示模a余i可达的最低的楼层,转移是显然的:dis...原创 2019-08-27 21:28:31 · 204 阅读 · 0 评论 -
求无向图的三元环个数
问题描述:给定nnn个点,mmm条边的无向图,求三元环个数。n≤100000,m≤min(200000,n∗(n−1)/2)n\le100000,m\le min(200000,n*(n-1)/2)n≤100000,m≤min(200000,n∗(n−1)/2)问题分析:搜集到的比较好的解法主要有两种:法一: 把边定向后枚举一条边先按照原图的边求出每个点的度数,然后把原图的无向边改为有...原创 2019-07-05 18:46:09 · 744 阅读 · 0 评论 -
BZOJ 2095: [Poi2010]Bridges 【二分+混合图欧拉回路】
题目描述:nnn个点mmm条边的连通图,每条边有正向和反向两个权值,无重边自环,求一条欧拉回路使得最大边权值最小题目分析:很容易想到二分答案后取出可行边再看能否构成欧拉回路。。然而。。又有有向边又有无向边是什么鬼??于是有神犇发明了混合图欧拉回路 −&gt;-&gt;−> 混合图的欧拉回路学习然后。。打代码的时候注意一下:二分的下界是每条边小的那个权值的最大...原创 2019-03-12 16:25:18 · 196 阅读 · 0 评论 -
【图论】 一笔画问题(欧拉路)
一笔画问题(euler-circuit.cpp)题目描述对给定的一个无向图,判断能否一笔画出。若能,输出一笔画的先后顺序,否则输出“No Solution!”所谓一笔画出,即每条边仅走一次,每个顶点可以多次经过。输出字典序最小的一笔画顺序。输入第1行:1个整数n,表示图的顶点数(n接下来n行,每行n个数,表示图的邻接矩阵输出第1行:一笔画的先后顺序,原创 2016-10-10 13:37:08 · 3766 阅读 · 0 评论