题意:一个村子有n个房子,他们用n-1条路连接起来,每两个房子之间的距离为w。有m次询问,每次询问房子a,b之间的距离是多少。分析:近期公共祖先问题,建一棵树,求出每一点i到树根的距离d[i],每次询问a。b之间的距离=d[a]+d[b]-2*d[LCA(a,b)];LCA(a,b)是a,b的近期公...
分类:
编程语言 时间:
2015-12-22 13:06:25
阅读次数:
200
题意:求强联通分量Tarjan算法 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #define clc(a,b) memset(a,b,sizeof(a))10 t...
分类:
其他好文 时间:
2015-12-19 23:14:00
阅读次数:
281
[有向图强连通分量] 有向图强连通分量的Tarjan算法在有向图G中,如果两个顶点间至少存在一条路径,称两个顶点强连通(strongly connected)。如果有向图G的每两个顶点都强连通,称G是一个强连通图。非强连通图有向图的极大强连通子图,称为强连通分量(strongly connecte....
分类:
其他好文 时间:
2015-12-12 23:15:08
阅读次数:
545
第一眼看到题目被吓傻。。maya有向图上单源最长路。。?后来仔细理解题意发现。。抢了一个ATM中的现金后这个ATM中就没有现金了。。然后我们可以想到,可以在某个强联通分量中不断绕圈抢劫!直到所有的现金全部被抢完。。毫不犹豫打个Tarjan缩点上去,每个点的点权是该点对应的强连通分量中所有点的点权(A...
题意:给定一个有向图,求出该有向图中有多少个点对,使x可以达到y。(x和y相等的情况也算)首先,很显然,若a和b两个点在同一个强连通分量中,那么一定满足:(1)a和b互相可达(2)a能达到的点数和b能达到的点数相等那么二话不说肯定是用tarjan缩点啦~点权自然是对应强连通分量的点个数然后缩完点之后...
分类:
Web程序 时间:
2015-12-06 20:58:27
阅读次数:
325
d.看一个图是不是强连通图s.求出强连通分量,看看有没有一个强连通分量包含所有点。c.Tarjan/*Tarjan算法复杂度O(N+M)*/#include#include#includeusing namespace std;const int MAXN=10010;//点数const int M...
分类:
其他好文 时间:
2015-12-04 20:22:02
阅读次数:
132
1、Tarjan/*Tarjan算法复杂度O(N+M)*/#include#include#includeusing namespace std;const int MAXN=20010;//点数const int MAXM=50010;//边数struct Edge{ int to,next...
分类:
其他好文 时间:
2015-11-28 19:52:31
阅读次数:
201
原文地址:有向图强连通分量的Tarjan算法[有向图强连通分量]在有向图G中,如果两个顶点间至少存在一条路径,称两个顶点强连通(strongly connected)。如果有向图G的每两个顶点都强连通,称G是一个强连通图。非强连通图有向图的极大强连通子图,称为强连通分量(strongly conne...
分类:
编程语言 时间:
2015-11-28 18:13:58
阅读次数:
309
1、一颗树中,给出a,b,求最近的距离。(我没考虑不联通的情况,即不是一颗树的情况)2、用最近公共祖先来求,记下根结点到任意一点的距离dis[],这样ans = dis[u] + dis[v] - 2 * dis[lca(u, v)]3、/*离线算法,LCATarjan复杂度O(n+Q);*/#in...
分类:
编程语言 时间:
2015-11-14 01:04:19
阅读次数:
269
1、给定一棵树,每条边都有一定的权值,q次询问,每次询问某两点间的距离。2、这样就可以用LCA来解,首先找到u, v 两点的lca,然后计算一下距离值就可以了。这里的计算方法是,记下根结点到任意一点的距离dis[],这样ans = dis[u] + dis[v] - 2 * dis[lca(u, v...
分类:
编程语言 时间:
2015-11-14 01:00:37
阅读次数:
280