的定义 点双连通分量的定义 要介绍,首先要介绍点双连通分量。 一个点双连通图的一个定义是:图中任意两不同点之间都有至少两条点不重复的路径。 一种简单的定义:不存在割点的图。 但这种定义对于两点一边的图时是没用的,它没有割点,但是并不能找到两条不相交的路径,因为只有一条路径。(也可以理解为 ...
转载 2021-08-14 10:44:00
308阅读
2评论
当一张图每条边最多属于一个环的时候,这个图叫做仙人掌 用来解决仙人掌上的问题
转载 2021-07-11 23:27:00
102阅读
2评论
定义:仙人掌仙人掌是满足每条边只在不超过 1 个简单环中的无向连通图。套LCA求最短路先利用tarjan把仙人掌转化为:按照tarjan套路,记录每个结点的dfn序和low序。然后对于每个子结点v,都记录一下fa[v][0]fa[v][0]fa[v][0]和pre[v]pre[v]pre[v],这个代码中有解释。然后跟tarjan一样维护low。关键部分:判断圆点的边。若low[v]>dfn[u]low[v]>dfn[u]low[v]>dfn[
原创 2021-08-10 09:16:32
79阅读
定义:仙人掌仙人掌是满足每条边只在不超过 1 个简单环中的无向连通图。套LCA求最短路先利用tarjan把仙人掌转化为:按照tarjan套路,记录每个结点的dfn序和low序。然后对于每个子结点v,都记录一下fa[v][0]fa[v][0]fa[v][0]和pre[v]pre[v]pre[v],这个代码中有解释。然后跟tarjan一样维护low。关键部分:判断圆点的边。若low[v]>dfn[u]low[v]>dfn[u]low[v]>dfn[
原创 2022-01-20 17:05:11
34阅读
点双联通分量边双联通分量想必看这篇博客的同学就会,并且边双联通分量理解和打
鸽子咕,咕子鸽 ...
转载 2021-08-08 20:00:00
45阅读
2评论
做点双连通的时候发现很多题目可以用写特意去学了一下,入门很简单嘛,而且是个很神奇的东西!!前置知识:点双连通分量,没了
原创 2022-02-10 15:24:27
42阅读
做点双连通的时候发现很多题目可以用写特意去学了一下,入门很简单嘛,而且是个很神奇的东西!!前置知识:点双连通分量,没了\color{Red}前置知识:点双连通分量,没了前置知识:点双连通分量,没了大概就是把一般图变成的结构,然后我们就可以在上面大概就是把一般图变成的结构,然后我们就可以在上面大概就是把一般图变成的结构,然后我们就可以在上面乱搞了比如给定一张无向图,怎么把它转化为?比如给定一张无向图,怎么把它转化为?比如给定一张无向图,怎么把它转化为?大概做法是:求出所有点
原创 2021-08-27 10:01:34
161阅读
Description 给一个N个点M条边的连通无向图,满足每条边最多属于一个环,有Q组询问,每次询问两点之间的最短路径。 给一个N个点M条边的连通无向图,满足每条边最多属于一个环,有Q组询问,每次询问两点之间的最短路径。 Input 输入的第一行包含三个整数,分别表示N和M和Q 下接M行,每行三个
原创 2021-06-04 23:48:00
142阅读
#include<bits/stdc++.h> using namespace std; const int N = (int)2e5 + 7; const int inf = 0x3f3f3f3f; int n, m, q, w[N], pa[N], depth[N]; vector<int> G[N], G2[N]; multiset<int> mulset[N]; int sz[N], so
转载 2019-10-09 13:49:00
61阅读
2评论
题目链接 "CF487E" 题解 + 剖 裸题 建好维护路径上最小值即可 点的值为其儿子的最小值,这个用堆维护 为什么只维护儿子?因为这样修改点的时候就只需要修改其父亲的堆 这样充分利用了一对一的特性优化了复杂度 如此询问时如果$lca$为点,再询问一下$lca$的父亲即可 复杂
IT
原创 2021-07-20 14:19:16
51阅读
SADPAIRS 删点不连通,点双, 非割点:没有影响 割点:子树DP一下 有不同颜色,所以建立虚树上dfs时候 如果当前点是割点 1.统计当前颜色虚树上的不连通点对,树形DP即可 2.统计所有颜色的虚树上的不连通点对。。。。 一个麻烦事是,虚树上一条边上选择一个原割点,都会对这个
转载 2019-02-20 10:49:00
46阅读
2评论
模板题. 建出. 对于每个点,只维护点儿子的最小值,不维护点父亲的值,这样的话每次修改只会改一个点. 我们需要支持单点修改,链查询,求 lca. LCT 可以非常方便地维护这些东西,然后如果 lca 是点的话特判一下点父亲的点值即可,可以单独开一个命名空间以防止变量名冲突。
转载 2021-07-07 10:03:40
48阅读
题面​​BZOJ​​ 给出一棵仙人掌(每条边最多属于一个环),多次询问求两点最短路。题解建,分是圆点还是点讨论一下。具体见 ​​神犇yyb的博客​​。但是题目并没有保证没有重边,而这个链接里的代码是默认没有重边(也就是没有长度为二的环)的,所以下面这组数据可以他。2 2 1 1 2 100 2 1 200 1 2显然答案是,但是上面链接中的博客出。正确的写法是内似边双的写法。而且找返祖边必
原创 2023-02-21 07:10:57
97阅读
测试地址:战略游戏 做法:本题需要用到+虚。 显而易见的是,两个点之间路径的必经点,就等于它们之间路径上的所有割点。因此我们很快想到建出,这样两点间路径上所有的圆点(除去两端)就是对应的割点。而询问一个集合,问能切开集合中某两个点的所有点,那就...
转载 2018-06-19 20:03:00
26阅读
2评论
不仅能解决仙人掌问题(虽然我仙人掌问题也没用过圆都是瞎搞过去的),还可以解决一般图的问题 一般图问题在于缩完环不是一棵,所以就缩点双(包括双向边) 每个点存他所在点双内除根以外的点的最小权值,这样的好处是更新原点的时候不用更新它一圈的点,只更新父亲即可 剖维护,然后查的时候如果lc
转载 2019-02-28 21:26:00
41阅读
2评论
测试地址:最短路 做法:本题需要用到来处理仙人掌。 题目中所给的图称作仙人掌图,即每条边至多在一个环上的图。对于这种图,我们一般把它转化成后,将树上的某些算法修改后来解决仙人掌上的问题。常用的一种转化方式就是。 在中,一个圆点表示原仙人掌...
转载 2018-04-20 11:57:00
64阅读
2评论
题意略题解求路径上的割点。然后就直接树上差分CODE#include <bits/stdc++.h>using namespace std;inline void rd(int &x) { char ch; for(;!isdigit(ch=getchar());); for(x=ch-'0';isdigit(ch=getchar());)x=x*10+ch-'
原创 2023-02-21 08:27:52
13阅读
Description 省选临近,放飞自我的小Q无心刷题,于是怂恿小C和他一起颓废,玩起了一款战略游戏。 这款战略游戏的地图由n个城市以及m条连接这些城市的双向道路构成,并且从任意一个城市出发总能沿着道路走到任意其他城市。 现在小C已经占领了其中至少两个城市,小Q可以摧毁一个小C没占领的城市,同时摧毁所有连接这个城市的道路。 只要在摧毁这个城市之后能够找到某两个小C占领的城市u和v
原创 2021-07-28 09:54:28
155阅读
给定一棵仙人掌,问有多少种重新编号的方式,使得到的仙人掌与原仙人掌同构。
转载 2020-06-08 10:15:00
32阅读
  • 1
  • 2
  • 3
  • 4
  • 5