
连通图
文章平均质量分 86
cillyb
这个作者很懒,什么都没留下…
展开
-
Kosaraju算法求解强连通分量
基本思路:• 这个算法是最通用的算法,其比较关键的部分是同时应用了原图G和反图GT。(步骤1)先用对原图G进行深搜记录时间结f(n)。(步骤2)选择f(n)最大的点在深搜得到各个强连通分量。•••2. 伪代码• Kosaraju_Algorithm:• step1:对原图G进行深度优先遍历,记录每个节点的离开时间。(即保存的是后序遍历)• s转载 2017-02-23 15:06:55 · 1280 阅读 · 0 评论 -
欧拉通路 欧拉回路的区别 及其判定
欧拉通路: 通过图中每条边且只通过一次,并且经过每一顶点的通路。欧拉回路: 通过图中每条边且只通过一次,并且经过每一顶点的回路。 无向图是否具有欧拉通路或回路的判定:欧拉通路:图连通;图中只有0个或2个度为奇数的节点欧拉回路:图连通;图中所有节点度均为偶数 有向图是否具有欧拉通路或回路的判定:欧拉通路:图连通;除2个端点外其余转载 2017-09-15 21:14:33 · 6487 阅读 · 0 评论 -
第八届蓝桥杯决赛 发现环(无向图找环 tarjan)
标题:发现环小明的实验室有N台电脑,编号1~N。原本这N台电脑之间有N-1条数据链接相连,恰好构成一个树形网络。在树形网络上,任意两台电脑之间有唯一的路径相连。不过在最近一次维护网络时,管理员误操作使得某两台电脑之间增加了一条数据链接,于是网络中出现了环路。环路上的电脑由于两两之间不再是只有一条路径,使得这些电脑上的数据传输出现了BUG。为了恢复正常传输。小明需要找到所有在环路上的电脑原创 2017-05-29 15:12:10 · 6016 阅读 · 0 评论 -
POJ 3177 Redundant Paths(边双连通分量+缩点)
题意:给一个无向图,要令每个点之间至少有两条不重合的路,需要至少加多少条边。和POJ3352一样,但是这题有重边,如2 21 21 2应该输出 12 21 22 1同样应该输出 1点击打开链接求双连通分量以及构造双连通分量:对于点双连通分支,实际上在求割点的过程中就能顺便把每个点双连通分支求出。建立一个栈,存储当前双连通分支,在搜索图原创 2017-04-24 19:47:02 · 641 阅读 · 0 评论 -
POJ 1236 Network of Schools(强连通分量,缩点)
kuangbin老师讲的非常好。。直接拷他的思路吧。强连通分量缩点求入度为0的个数和出度为0的分量个数题目大意:N(2各学校之间有单向的网络,每个学校得到一套软件后,可以通过单向网络向周边的学校传输,问题1:初始至少需要向多少个学校发放软件,使得网络内所有的学校最终都能得到软件。2,至少需要添加几条传输线路(边),使任意向一个学校发放软件后,经过若干次传送,网络内所有的学校最终都能得到原创 2017-04-25 15:17:09 · 496 阅读 · 0 评论 -
tarjan算法应用 割点 桥 双连通分量
tarjan算法的应用。 还需多练习…….遇上题目还是容易傻住 对于tarjan算法中使用到的Dfn和Low数组. low[u]:=min(low[u],dfn[v])——(u,v)为后向边,v不是u的子树; low[u]:=min(low[u],low[v])——(u,v)为树枝边,v为u的子树; 1.求割点: 割点:若删掉某点后,原连通图分裂为多个子图,则称该点为割点。转载 2017-04-20 00:04:47 · 442 阅读 · 0 评论 -
POJ 3694 Network(割边+LCA)
题意:一个无向图可以有重边,下面q个操作,每次在两个点间连接一条边,每次连接后整个无向图还剩下多少桥(注意是要考虑之前连了的边,每次回答是在上一次的基础之上)思路:先跑一次tarjan,求出桥和缩点,那么远无向图将缩点为一棵树,树边正好是原来的桥。每次连接两点,看看这两点是不是在同一个缩点内,如果是,那么缩点后的树没任何变化,如果两点属于不同的缩点,那么连接起来,然后找这两个缩原创 2017-05-02 00:17:25 · 444 阅读 · 0 评论 -
tarjan算法--求无向图的割点和桥
一.基本概念 1.桥:是存在于无向图中的这样的一条边,如果去掉这一条边,那么整张无向图会分为两部分,这样的一条边称为桥无向连通图中,如果删除某边后,图变成不连通,则称该边为桥。 2.割点:无向连通图中,如果删除某点后,图变成不连通,则称该点为割点。二:tarjan算法在求桥和割点中的应用 1.割点:1)当前节点为树根的时候,条件是“要有多余一棵子树转载 2017-04-18 13:38:30 · 1008 阅读 · 0 评论 -
POJ 2553 - The Bottom of a Graph(强连通分量, 缩点)
题意:如果v点能够到的点,反过来也能够到v点,则称这个点为sink点,输出所有的sink点思路:求下强连通分量,出度为0的连通分量里的点都是sink点代码:#include#include#include#include#includeusing namespace std;const int maxn = 1e4+5;int n, m, dfn[maxn原创 2017-04-28 19:38:29 · 482 阅读 · 0 评论 -
POJ 3660 Cow Contest (floyd 传递闭包)
题目地址:点击打开链接题意:有n头牛,有强有弱,现在给出m个关系A B(表示A比B强),现在让你求有几头牛的排名是可以确定的。思路:强弱关系是传递的,先求一次传递闭包,再枚举每头牛,若比他强的+比他弱的牛数量为n-1,那么他的名次就是确定的。#include#include#includeusing namespace std;const i原创 2017-03-21 00:05:34 · 412 阅读 · 0 评论 -
ZOJ 3781 Paint the Grid Reloaded (缩点,bfs)
题目地址:点击打开链接题意:给一个n*m的由X或O构成的图,对一个点操作可以使与它相连通(上下左右)的所有一样颜色的格子翻转颜色(X—>O或O—>X),问给定的矩阵最少操作多少次可以全部变成一样的颜色。思路:因为每次翻转都可以把与该点所在连通块相邻的连通块变成同一颜色,要都变成一种颜色,也就是遍历完最远的那个连通块。现在可以对每个连通块进行缩点,相邻的连通块原创 2017-03-20 18:47:14 · 511 阅读 · 0 评论 -
poj 2186 Popular Cows(强连通分量,tarjan或Kosaraju)
题目地址:点击打开链接题意:给定一些有向路,求有多少个点可以由其余的任意点到达思路:第一道强连通分量题,照着白书写的。最后判断拓扑排序最后一个强连通分量是否可行看到两种方法,白书是对最后一个连通分量再逆向dfs一遍,验证是否所有点都能到达;看到网上大多的解法是计算每个连通分量的出度,若当且仅当出度为0的只有1个才符合。代码:原创 2017-02-22 19:49:33 · 772 阅读 · 0 评论 -
tarjan算法求解强连通分量
转自:点击打开链接全网最详细tarjan算法讲解,我不敢说别的。反正其他tarjan算法讲解,我看了半天才看懂。我写的这个,读完一遍,发现原来tarjan这么简单!tarjan算法,一个关于 图的联通性的神奇算法。基于DFS(迪法师)算法,深度优先搜索一张有向图。!注意!是有向图。根据树,堆栈,打标记等种种神(che)奇(dan)方法来完成剖析一个图的工作。而图的联通性,就是任督二转载 2017-02-23 14:02:28 · 1070 阅读 · 0 评论 -
HDU 5934 Bomb(tarjan缩点)
题意:给你n个炸弹(x, y, r, c),(x, y)是坐标,r是爆炸半径,c是引爆这个炸弹的花费。问你最少花费多少能引爆所有炸弹。思路:枚举炸弹i j,如果i能引爆j,就i->j连一条边。然后跑下tarjan并缩点形成一个DAG,我们可以知道入度为0的是必须自身引爆,入度不为0的可以由其他炸弹来引爆,我们只需要求出每个入度为0的缩点中引爆所需的最小花费的那个炸弹,最后加起来求和原创 2017-09-19 17:05:04 · 511 阅读 · 0 评论