原文地址:https://www.byvoid.com/blog/scc-tarjan/ [有向图强连通分量] 在有向图G中,如果两个顶点间至少存在一条路径,称两个顶点强连通(strongly connected)。如果有向图G的每两个顶点都强连通,称G是一个强连通图。非强连通图有向图的极大强连通子 ...
分类:
编程语言 时间:
2017-08-09 18:07:04
阅读次数:
168
【题目描述】: 在幻想乡,上白泽慧音是以知识渊博闻名的老师。春雪异变导致人间之里的很多道路都被大雪堵塞,使有的学生不能顺利地到达慧音所在的村庄。因此慧音决定换一个能够聚集最多人数的村庄作为新的教学地点。 人间之里由N个村庄(编号为1..N)和M条道路组成,道路分为两种一种为单向通行的,一种为双向通行 ...
分类:
其他好文 时间:
2017-08-09 13:44:52
阅读次数:
237
tarjan扫一遍后直接判断 最关键的地方就是建边(x[i] <= x[j] && y[i] >= x[j] && y[i] <= y[j]) || (x[i] >= x[j] && x[i] <= y[j] && y[i] >= y[j]) 如果同一个点的拆分在同一个强连通分量里面,那么就无法实现 ...
分类:
其他好文 时间:
2017-08-08 15:18:34
阅读次数:
194
http://acm.hdu.edu.cn/showproblem.php?pid=2460 题意:给出图,求每次增加一条边后图中桥的数量。 思路: 先用tarjan算法找出图中所有的桥,如果lowv>pre[u],那么u—v就是桥,此时可以标记一下v。 之后就是利用LCA,找到两个节点的公共祖先, ...
分类:
Web程序 时间:
2017-08-07 10:18:05
阅读次数:
259
Tarjan求LCA 这是一篇非常好的讲解,靠这个文章搞懂的~ 例题1:商务旅行 题目描述 Description 某首都城市的商人要经常到各城镇去做生意,他们按自己的路线去做,目的是为了更好的节约时间。 假设有N个城镇,首都编号为1,商人从首都出发,其他各城镇之间都有道路连接,任意两个城镇之间如果 ...
分类:
其他好文 时间:
2017-08-07 00:09:41
阅读次数:
393
使用tarjan算法求桥,模板题,但是。。。 1.有重边 2.不一定连通 3.没有人守桥至少要派一个人去 http://acm.hdu.edu.cn/showproblem.php?pid=4738 这种题挺好的,可以锻炼人的耐性和心理承受能力。。。 ...
分类:
其他好文 时间:
2017-08-06 22:03:30
阅读次数:
131
离线算法也就是需要先把所有查询给保存下来,最后一次输出结果。 离线算法是基于并查集实现的,首先就是初始化P[i] = i。 接下来对于每个点进行dfs: ①首先判断是否有与该点有关的查询,如果当前该点为u,与它有关的点为v,如果v已经访问过了,那么它们的LCA就是find(v)。如果v还没有访问,那 ...
分类:
编程语言 时间:
2017-08-06 21:47:47
阅读次数:
171
我们进入一个新的模块——图论! emmmmm这个专题更出来可能有点慢别介意,原因是要划的图和要给代码加的注释比较多,更重要的就是。。。这几个晚上我在追剧!!我们的少年时代超级超级超级好看,剧情很燃啊!!咳咳,好吧下面回归正题。 一、图的存储: 1、邻接矩阵: 假设有n个节点,建立一个n×n的矩阵,第 ...
分类:
其他好文 时间:
2017-08-06 00:55:27
阅读次数:
258
题目链接:http://poj.org/problem?id=1330 题意:给定一个n个节点的有根树,以及树中的两个节点u,v,求u,v的最近公共祖先。 数据范围:n [2, 10000] 思路:从树根出发进行后序深度优先遍历,设置vis数组实时记录是否已被访问。 每遍历完一棵子树r,把它并入以r ...
分类:
编程语言 时间:
2017-08-04 19:24:45
阅读次数:
166
http://acm.hdu.edu.cn/showproblem.php?pid=2586 给定一棵带权有根树,对于m个查询(u,v),求得u到v之间的最短距离 那么仅仅要求得LCA(u,v),dis(u,v)=dis[u]+dis[v]-2*dis[LCA(u,v)]。当中dis[i]表示节点i ...
分类:
其他好文 时间:
2017-08-04 12:52:47
阅读次数:
130