题目链接:传送门 题目大意:一副无向图,问有多少个节点满足删除该节点后图不连通,对于每个满足条件的节点,输出节点编号及删除节点将图分为几个连通块。若没有节点满足则输出No SPF nodes 题目思路:tarjan算法求关节点入门题(也可用矩阵存图) ...
分类:
其他好文 时间:
2016-05-21 17:18:14
阅读次数:
174
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2586 这题以前做过…现在用tarjan搞一发…竟然比以前暴力过的慢………… 由于是离线算法,需要Query来保存查询数据,Ans来保存结果。最后输出的时候按照idx的顺序输出,所以胡搞了个排序。。 df ...
分类:
其他好文 时间:
2016-05-20 23:49:15
阅读次数:
474
题目链接:http://poj.org/problem?id=1330 题意就是求一组最近公共祖先,昨晚学了离线tarjan,今天来实现一下。 个人感觉tarjan算法是利用了dfs序和节点深度的关系,大致的意思:dfs如果不递归到递归基,那么dfs就会越递归越深,这个时候深度也是相应增加的,所以这 ...
分类:
其他好文 时间:
2016-05-20 13:17:58
阅读次数:
197
描述 http://www.spoj.com/problems/COT/ 给出一棵n个节点的树,树上每一个节点有权值.m次询问,求书上u,v路径中第k小的权值. 分析 POJ_2104_Kth(主席树) 现在是把原来的问题搬到树上去了.首先我们肯定要求lca,新学了Tarjan的离线算法. 每一个点 ...
分类:
其他好文 时间:
2016-05-20 13:12:46
阅读次数:
290
tarjan缩点。网上的代码都没有缩点是把vis变成另外一个值,我也不知道是为什么。 #include #include #include using namespace std; const int maxn = 200000 + 10; const int maxm = 1000000 + 10... ...
分类:
其他好文 时间:
2016-05-20 11:11:07
阅读次数:
127
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2586 题意:给出一棵n个节点的无根树,每条边有各自的权值。给出m个查询,对于每条查询返回节点u到v的最短路径的权值和,按查询顺序输出结果。 数据范围:n [2, 40000], m[1, 200] 思路 ...
分类:
编程语言 时间:
2016-05-20 00:47:25
阅读次数:
214
良心的题解↓ http://z55250825.blog.163.com/blog/static/150230809201412793151890/ tarjan的时候如果是树边则做树形DP(遇到环就无视),最后在tarjan回溯前扫一遍当前点为“最高点”的环,进行环上DP,这个环上DP是$O(n^ ...
分类:
其他好文 时间:
2016-05-18 21:54:46
阅读次数:
241
题意:给出一个有向图代表牛和牛喜欢的关系,且喜欢关系具有传递性,求出能被所有牛喜欢的牛的总数(除了它自己以外的牛,或者它很自恋)。 思路:这个的难处在于这是一个有环的图,对此我们可以使用tarjan算法求出强连通分量,把强连通分量压缩成一个点,构成一个新的图,这个图一定是没有环的,如果有环就跟强连通 ...
分类:
编程语言 时间:
2016-05-18 21:50:48
阅读次数:
163
基础模板题,应用tarjan算法求有向图的强连通分量,tarjan在此处的实现方法为:使用栈储存已经访问过的点,当访问的点离开dfs的时候,判断这个点的low值是否等于它的出生日期dfn值,如果相等,那这个点就在一个强连通分量里面,此时从栈中向外取出元素,知道取出的元素与这个点的值相等时结束,我们所 ...
分类:
编程语言 时间:
2016-05-18 21:37:14
阅读次数:
168
题意:求无向图的割边。 思路:tarjan算法求割边,访问到一个点,如果这个点的low值比它的dfn值大,它就是割边,直接ans++(之所以可以直接ans++,是因为他与割点不同,每条边只访问了一遍)。 需要注意的就是此处有多重边,题目中要求输出确定的不能被删除的边,而多重边的保留不是可以确定的,所 ...
分类:
编程语言 时间:
2016-05-18 21:35:49
阅读次数:
177