我真的好喜欢图论啊。

(虽然可能理解的并不深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#语言 ArrayList集合

  2. JAVA 保留两位小数

    package com.oracle.pojo; import java.math.BigDecimal; import java.text.DecimalFormat; import java.te ...

  3. Javascript中没有引用传递,只有按值传递

    很多人,包括我,受书本知识消化不彻底的影响,认为 JS 中参数有两种传递方式:数字.字符串等按值传递:数组.对象等按地址(引用)传递.对此种观点,我们要谨慎. var v1 = [] var v2 = ...

  4. IPv4与IPv6数据报格式

    IPv4: IPv4数据报中的字段: 版本号:规定了数据报的IP协议版本,通过查看版本号,路由器能够确定如何解释IP数据报的剩余部分,因为不同IP版本使用不同的数据报格式. 首部长度:IPv4数据报可 ...

  5. angularjs中常见错误

    使用angularjs时间不是非常长,理解不够透彻.但为刚開始学习的人还是能够帮助点的. 1.回调函数. . ...-->切记它是异步的,出现莫名其妙的问题记得查看一下 2.内存泄露. .... ...

  6. F08标准中Open命令的newunit选项

    从gfortran 4.5开始Open命令开始支持newunit选项,示例如下: integer :: u open(newunit=u, file="log.txt", posi ...

  7. scala快速学习笔记(一):变量函数,操作符,基本类型

    为了用spark,先学下scala. 参考教程:http://meetfp.com/zh/scala-basic doc查询:http://docs.scala-lang.org 其它资料:http: ...

  8. 使用Microsoft Office 2007将文档转换为PDF

    点击帮助 输入关键词PDF后搜索 点击进入Save or convert to PDF or XPS 点击进入2007 Microsoft Office Add-in: Microsoft Save ...

  9. (31)java web的hibernate使用-一级缓存,二级缓存

    参考:https://blog.csdn.net/miachen520/article/details/52195832 hibernate自带一级缓存 和 二级缓存 一,一级缓存: 基于Sessio ...

  10. Android 单击跳转到打电话发短信界面,长按打电话发短信

    <uses-permission android:name="android.permission.CALL_PHONE"/><uses-permission a ...