标签:
Tarjan离线算法,相当于就是把整个树给DFS了一遍。DFS的同时,处理关于当前节点的询问。复杂度就是:O(n + q),n为总结点数,q为询问结点对数。
具体是怎么一回事呢。
看一下这个画个图理解一下就好了。
//parent为并查集,FIND为并查集的查找操作 //QUERY为询问结点对集合 //TREE为基图有根树 Tarjan(u) visit[u] = true for each (u, v) in QUERY if visit[v] ans(u, v) = FIND(v) for each (u, v) in TREE if !visit[v] Tarjan(v) parent[v] = u
是的,感觉看完这个之后什么都记起来了。
标签:
原文地址:http://www.cnblogs.com/cherry231/p/5303154.html