我真的好喜欢图论啊。

(虽然可能理解的并不深hhh)

上一次(暑假)我们初探了强联通分量,这一次我们再探。(特别感谢pku-lyc老师的课件。有很多引用)

  • 上次我们忘记讨论复杂度了。tarjan老爷爷的算法都很strong as flash。这次是O(N)。
  • 强联通分量中任何两个点可互相到达。(显然的性质,但是需要强调识别。)
  • 上一次例题遗漏的性质
    •   有向无环图中唯一出度为 0 的点,一定可以由任何点出发均可达
  • 来丢几道例题跑。

例题1 Network

• N个学校之间有单向的网络(是有向连通图),每个学校得到一
套软件后,可以通过单向网络(有向边)向周边的学校传输。
• 问题1:初始至少需要向多少个学校发放软件,才能使得网络内
所有的学校最终都能得到软件。
• 问题2:至少需要添加几条传输线路(边),使任意向一个学校发放
软件后,经过若干次传送,网络内所有的学校最终都能得到软件。

问题简化。

• 给定一个有向连通图,求:
• 1) 求一个最小的顶点集,使得从这个顶点集出发,可以到达全部顶点
• 2) 至少要加多少条边,才能从任何一个顶点出发,都能到达全部顶点

• 1. 求出所有强连通分量
• 2. 每个强连通分量缩成一点,则形成一个有向无环图DAG。
• 3. DAG上面有多少个入度为0的顶点,问题1的答案就是多少

• 在DAG上要加几条边,才能使得DAG变成强连通的,问题2的答案
就是多少
• 加边的方法:
• 为每个入度为0的点添加入边,为每个出度为0的点添加出边
• 假定有 n 个入度为0的点,m个出度为0的点,max(m,n)就是第二
个问题的解

  * 另一个性质

有向无环图中所有入度不为0的点,一定可以由
某个入度为0的点出发可达。

例题2 间谍网络

,里面还有对缩点的一些小结。

本算法容易错的:缩点最后在scc_cnt上操作。

再探结束,日后也许会深探。(可别咕啊。)

强连通分量再探 By cellur925的更多相关文章

  1. Codeforces K. Ice Skating(求强连通分量)

    题目描述: Ice Skating time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...

  2. 强连通分量初探 By cellur925

    并不理解.但是毕竟也做了一些题,略微小结. 注:这里讨论的暂时是有向图的强联通分量. 先贴出模板.学长:我也不理解,但我可以叫你们怎么背代码. #include<cstdio> #incl ...

  3. Tarjan算法--强连通分量

    tarjan的过程就是dfs过程. 图一般能画成树,树的边有三种类型,树枝边 + 横叉边(两点没有父子关系) + 后向边(两点之间有父子关系): 可以看到只有后向边能构成环,即只有第三张图是强连通分量 ...

  4. Tarjan应用:求割点/桥/缩点/强连通分量/双连通分量/LCA(最近公共祖先)【转】【修改】

    一.基本概念: 1.割点:若删掉某点后,原连通图分裂为多个子图,则称该点为割点. 2.割点集合:在一个无向连通图中,如果有一个顶点集合,删除这个顶点集合,以及这个集合中所有顶点相关联的边以后,原图变成 ...

  5. 强连通分量的Tarjan算法

    资料参考 Tarjan算法寻找有向图的强连通分量 基于强联通的tarjan算法详解 有向图强连通分量的Tarjan算法 处理SCC(强连通分量问题)的Tarjan算法 强连通分量的三种算法分析 Tar ...

  6. SCC(强连通分量)

    1.定义: 在有向图G中,如果两个顶点间至少存在一条路径,称两个顶点强连通(SC---strongly connected). 有向图中的极大强连通子图,成为强连通分量(SCC---strongly ...

  7. tarjan算法+缩点:求强连通分量 POJ 2186

    强连通分量:1309. [HAOI2006]受欢迎的牛 ★★   输入文件:cow.in   输出文件:cow.out   简单对比时间限制:1 s   内存限制:128 MB [题目描述] 每一头牛 ...

  8. ZOJ 3232 It's not Floyd Algorithm --强连通分量+Floyd

    题意:给你一个传递闭包的矩阵,mp[u][v] = 1表示u可以到达v,为0代表不可到达,问你至少需要多少条边组成的传递闭包符合这个矩阵给出的关系 分析:考虑一个强连通分量,如果这个分量有n个节点,那 ...

  9. poj 2186 tarjan求强连通分量

    蕾姐讲过的例题..玩了两天后才想起来做 貌似省赛之后确实变得好懒了...再努力两天就可以去北京玩了! 顺便借这个题记录一下求强连通分量的算法 1 只需要一次dfs 依靠stack来实现的tarjan算 ...

随机推荐

  1. C#文件的压缩和解压(ZIP)使用DotNetZip封装类操作zip文件(创建/读取/更新)实例

    需要引用Ionic.Zip命名空间 DLL下载地址在这里:http://dotnetzip.codeplex.com/ 文件压缩 /// <summary> /// 压缩ZIP文件 /// ...

  2. leetcode第一刷_Best Time to Buy and Sell Stock III

    这道题还是挺难的,属于我前面提到的,给个数组,线性时间找出个什么东西,尽管上面的两个买卖股票也是这类.只是相比之下稚嫩多了.有关至少至多的问题比較烦人,不好想,等再做一些题,可能会发现什么规律.这道题 ...

  3. DoubleViewPager

    https://github.com/eltld/DoubleViewPager https://github.com/eltld/DoubleViewPagerSample

  4. TestNG demo

    下载TestNG的归档文件 下载最新版本的TestNG的jar文件,详细请点击访问 http://www.testng.org..在写这篇教程的时候,我下载TestNG中-6.8.jar,并将 tes ...

  5. Liunx之Lamp搭建笔记

    1:LAMP源代码搭建用户关系 a.  apache服务以daemon用户的处理请求.以root身份作为主进程. b. php源代码安装,会在httpd.conf文件里自己主动增加调用模块.可是在该文 ...

  6. VS2005断点失效的问题

    VS2005下使用VC,部分断点无效,显示『当前不会命中断点.还没有为该文档加载任何符号』. 试过以下一些方法: 1.无效断点所在的项目和启动项目的设置:项目->属性->配置属性-> ...

  7. 2016/06/16 phpexcel

      程序部分   require_once './phpexcel/PHPExcel.php';   // 首先创建一个新的对象  PHPExcel object $objPHPExcel = new ...

  8. JavaScript 实现块级作用域

    (function(){ 块级作用域: })();

  9. DOM操作三

    1.以一个对象的x和y属性的方式返回滚动条的偏移量 function getScrollOffsets(w){ //使用指定的窗口,如果不带参数则使用当前窗口 w= w || window; //除了 ...

  10. QT下的QThread学习(一)

    参考文档如下: http://blog.csdn.net/styyzxjq2009/article/details/8204506 上面这篇文章的开头也也出了另外两篇文章,一并看看,可以看到他的解决思 ...