-------------图论---------------
Chandery
自己选的路,就算是跪着也要走完~
展开
-
浅谈树上倍增
Tarjan LCA http://blog.csdn.net/cdy1206473601/article/details/77104910 讲解 上次写了Tarjan LCA,但是当这棵树是一条链的话,时间复杂度就很高啦!所以,我们可以用倍增来解决。但是,在随机数据下,Tarjan是快于倍增的! 好吧,倍增思想就是设一个fa[i][j]表示i结点的第2j2j2^j级祖先。然后就可以通...原创 2017-08-15 07:51:05 · 718 阅读 · 0 评论 -
浅谈LCA(最近公共祖先)
简介 首先是最近公共祖先的概念(什么是最近公共祖先?): 在一棵没有环的树上,每个节点肯定有其父亲节点和祖先节点,而最近公共祖先,就是两个节点在这棵树上深度最大的公共的祖先节点。 换句话说,就是两个点在这棵树上距离最近的公共祖先节点。 所以LCA主要是用来处理当两个点仅有唯一一条确定的最短路径时的路径。 讲解 我们今天介绍一种计算LCA的方法——Tarjan。 ...原创 2017-08-12 07:47:04 · 1010 阅读 · 0 评论 -
浅谈最小生成树
简介 Kruskal(克鲁斯卡尔)算法是一种巧妙利用并查集来求最小生成树的方法。首先我们把无向图中互相连通的一些点成为处于同一连通块的。Kruskal算法将一个连通块仿作一个集合。Kruskal首先将所有的边按从小到大的顺序排序,并认为每一个点都是孤立的,分属于n个独立的集合。然后按顺序美剧每一条边。如果这条边链接着两个不同的集合,就把这两条边加入最小生成树,这两个不同的集合就合并了;如果...原创 2017-01-17 16:37:13 · 363 阅读 · 1 评论 -
浅谈单源最短路径(Spfa,Dijkstra)
Spfa Spfa是类似bfs的一种图论方法,运用队列更新dis[i],求得图中1~n的最短路径。 Spfa中用到dis[i]表示图中每一点距离起点的长度,bz[i]用来记录编号为i的点是否入队,a[x,y]表示图中x~y之间的距离,b[x,i]表示编号为x的点的第i条边的终点,每次更新这个终点到起点的距离,以当前入队的点来更新,最后求出答案。 tov[i]表示编号为i的边的终...原创 2017-01-17 15:54:05 · 359 阅读 · 1 评论 -
Tarjan算法介绍
一种由Robert Tarjan提出的求解有向图强连通分量的线性时间的算法。 Tarjan与无向图连通性 ·几个定义 给定无向图G=(V,E)G=(V,E)G=(V,E) 如果割掉点x,图中的连通块数量增加,则称x为G的割点 如果割掉边e,图中的连通块数量增加,则称e为G的桥或割边 ·时间戳 在图的深度优先搜索中,按照每个节点的访问顺序所给每个点编的号,该编号叫做“时...原创 2018-07-14 09:19:14 · 1007 阅读 · 0 评论