博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj1236 Network of Schools ,有向图求强连通分量(Tarjan算法),缩点
阅读量:6352 次
发布时间:2019-06-22

本文共 1270 字,大约阅读时间需要 4 分钟。

题目链接: 

题意:

 给定一个有向图,求:

1) 至少要选几个顶点。才干做到从这些顶点出发,能够到达所有顶点
2) 至少要加多少条边。才干使得从不论什么一个顶点出发,都能到达所有顶点
    顶点数<= 100

求完强连通分量后,缩点,计算每一个点的入度,出度。

 第一问的答案就是入度为零的点的个数,

 第二问就是max(n,m) // 入度为零的个数为n, 出度为零的个数为m. //kuangbin巨巨分析非常棒!

#include
#include
#include
#include
#include
using namespace std;const int maxn = 100 + 10;vector
G[maxn];int dfn[maxn], low[maxn], belong[maxn], dfs_clock, scc_cnt;stack
S;void dfs(int u){ dfn[u] = low[u] = ++dfs_clock; S.push(u); for(int i=0; i

3. DAG上面有多少个入度为0的顶点。问题1的答案就是多少 在DAG上要加几条边。才干使得DAG变成强连通的,问题2的答案就是多少 加边的方法: 要为每一个入度为0的点加入入边,为每一个出度为0的点加入出边 假定有 n 个入度为0的点,m个出度为0的点,怎样加边? 把全部入度为0的点编号 0,1,2,3,4 ....N -1 每次为一个编号为i的入度0点可达的出度0点,加入一条出边,连到编号为(i+1)%N 的那个出度0点, 这须要加n条边 若 m <= n,则 加了这n条边后,已经没有入度0点。则问题解决,一共加了n条边 若 m > n。则还有m-n个入度0点,则从这些点以外任取一点,和这些点都连上边,就可以,这还需加m-n条边。 所以,max(m,n)就是第二个问题的解 此外:当仅仅有一个强连通分支的时候,就是缩点后仅仅有一个点,尽管入度出度为0的都有一个,可是实际上不须要添加清单的项了,所以答案是1。0; */ /* input: 30 18 0 7 21 0 1 4 15 28 0 9 0 10 15 16 0 22 26 0 1 5 10 12 0 3 17 29 0 2 5 17 0 19 23 0 20 0 1 7 15 19 0 0 23 0 0 0 5 18 0 0 7 18 0 17 0 24 0 13 21 0 26 0 0 2 23 30 0 2 9 11 13 14 27 0 2 0 14 0 0 28 0 output: 3 6 */

转载地址:http://yjmla.baihongyu.com/

你可能感兴趣的文章
好程序员大数据独家解析-hadoop五大节点
查看>>
2019年5月26日-linux就该这么学-第11课
查看>>
Python 前景介绍
查看>>
php升级到5.4
查看>>
”由于没有远程桌面授权服务器可以提供许可证,远程会话被中断“的解决方案...
查看>>
freebsd静态路由
查看>>
Oracle技术之ufsdump与ufsrestore(一)
查看>>
JSON 的一些知识
查看>>
zabbix监控windows
查看>>
记录工作与学习的点滴
查看>>
一个perl写的判断ip归属地
查看>>
QEMU Networking
查看>>
我的友情链接
查看>>
docker新建自定义网桥,实现不同主机容器互联
查看>>
在SQL Server中使用SQL语句查询一个存储过程被其它所有的存储过程引用的存储过程名...
查看>>
windows 2003建立RAID-0 , RAID0-1, RAID-5 卷。(vmware环境)
查看>>
向大家推荐一个非常好用的JS日历控件My97DatePicker
查看>>
我的友情链接
查看>>
第三章:javascript: 列表
查看>>
红帽中出现”This system is not registered with RHN”的解决方案
查看>>