考虑离线。用Link-Cut Tree维护删除时间的最大生成树。加入一条边时,如果两点不连通则直接link,否则肯定有一条边多余,若形成奇环则将多余的边加入集合。删除一条边时,若这条边是树边则直接删除,否则若在集合中,则从集合中删除。查询时,如果集合中没有边,则为二分图。#includeconst ...
分类:
其他好文 时间:
2015-08-06 21:58:11
阅读次数:
106
WZJ的数据结构(负三十二)难度级别:D; 运行时间限制:5000ms; 运行空间限制:262144KB; 代码长度限制:2000000B试题描述给你一棵N个点的无根树,边上均有权值,每个点上有一盏灯,初始均亮着。请你设计一个数据结构,回答M次操作。1 x:将节点x上的灯拉一次,即亮变灭,灭变亮。2...
分类:
其他好文 时间:
2015-08-03 16:25:12
阅读次数:
113
无向图割边割点算法而当(u,v)为树边且low[v]>dfn[u]时,表示v节点只能通过该边(u,v)与u连通,那么(u,v)即为割边。 1 void dfs(int u) { 2 //记录dfs遍历次序 3 static int counter = 0; 4 5 ...
分类:
移动开发 时间:
2015-07-31 21:38:31
阅读次数:
296
在每条边两个点中间加上一个虚拟点代表这条边权,就可以化边权为点权。把没删掉的边用LCT维护一棵生成树,树边都是桥。对于一条非树边,把树上对应路径上所有边的权值都修改为0,表示都不是桥。然后倒着处理询问,对于每次删掉的边,把两点路径上边权都修改为0。询问等价于查询两点间边权和,若两点连通且路径上不存在...
分类:
其他好文 时间:
2015-07-27 22:19:51
阅读次数:
198
通道:http://acm.hdu.edu.cn/showproblem.php?pid=5296题意:给一棵n个节点的树,再给q个操作,初始集合S为空,每个操作要在一个集合S中删除或增加某些点,输出每次操作后:要使得集合中任意两点互可达所耗最小需要多少权值。(记住只能利用原来给的树边。给的树边已经...
分类:
其他好文 时间:
2015-07-23 19:15:08
阅读次数:
192
图有两种标准的表示方法,即邻接矩阵和邻接表(通常邻接矩阵用于稠密图,邻接表用于稀疏图)。如下:
对于图的搜索有两种方法:深度优先搜索 & 广度优先搜索。
广度优先搜索(Breadth-first search)
广度优先搜索是将已发现和未发现顶点之间的边界沿其广度方向向外扩展。亦即算法首先会发现和s距离为k的所有点,然后才会发现和s距离为k+1的其他顶点。
伪代码:
...
分类:
编程语言 时间:
2015-07-20 09:18:55
阅读次数:
184
博主图论比较弱,搜了模版也不会用。。。所以决心学习以下tarjan算法。割点和割边的概念不在赘述,tarjan能在线性时间复杂度内求出割边。重要的概念:时间戟,就是一个全局变量clock记录访问结点的时间。一个无向图dfs会形成一个森林,当图只有一个连通分量时,就只有一棵树。由于在无向图中,除了树边...
分类:
其他好文 时间:
2015-07-19 23:05:36
阅读次数:
551
题目链接
题意:
给定n个点 q个询问
下面n-1行给出树边,点有黑或白色,初始化为白色
下面q行:
询问有2种:
1、 0 x 把x点黑变白,白变黑
2、1 x 询问Path(1,x)路径上第一个黑点的点标, 若不存在黑点则输出-1
思路:
lct裸题
#include
#include
#include
#include
#include
#include
#i...
分类:
其他好文 时间:
2015-07-05 18:33:00
阅读次数:
142
题目链接:
POJ1523
题意:
问一个连通的网络中有多少个关节点,这些关节点分别能把网络分成几部分
题解:
Tarjan 算法模板题
顺序遍历整个图,可以得到一棵生成树:
树边:可理解为在DFS过程中访问未访问节点时所经过的边,也称为父子边
回边:可理解为在DFS过程中遇到已访问节点时所经过的边,也...
分类:
编程语言 时间:
2015-06-30 13:04:22
阅读次数:
286
题目大意:平面上有n个点,构成一个单调递减的序列。即对于任意的iyj。现在要用一棵树连接这n个点。树边为有向边,只能向右或向上。求最小的权值。分析:本题其实是式子合并的变形。f[i][j]=f[i][k]+f[k+1][j]+y[k]-y[j]+x[k+1]-x[i]其中s[i][j-1] 2 #i...
分类:
其他好文 时间:
2015-06-25 20:58:08
阅读次数:
109