码迷,mamicode.com
首页 > Web开发 > 详细

Usaco5.3.3 Network of Schools

时间:2017-07-17 13:42:08      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:出发点   组成   应该   电脑网络   错误   连接   强连通分量   它的   包括   

题目描述

一些学校连入一个电脑网络。那些学校已订立了协议:每个学校都会给其它的一些学校分发软件(称作“接受学校”)。注意即使 B 在 A 学校的分发列表中, A 也不一定在 B 学校的列表中。

你要写一个程序计算,根据协议,为了让网络中所有的学校都用上新软件,必须接受新软件副本的最少学校数目(子任务 A)。更进一步,我们想要确定通过给任意一个学校发送新软件,这个软件就会分发到网络中的所有学校。为了完成这个任务,我们可能必须扩展接收学校列表,使其加入新成员。计算最少需要增加几个扩展,使得不论我们给哪个学校发送新软件,它都会到达其余所有的学校(子任务 B)。一个扩展就是在一个学校的接收学校列表中引入一个新成员。

怎么办呢?我们把这个问题等价一下,相当于求最少从哪几个节点出发,可以遍历整幅图。

我们先来考虑入度:入度为零的节点必须遍历,所以入度为零的节点都被包括在搜索点的集合中。

但是仅仅搜入度为零的节点还不够,因为有可能在图的最边缘的节点组成了一个环,所以我们也应该在最边缘的环中任意选一个节点作为出发点。

可是如果有多个环重叠在一起呢?所以只找环是错误的。

因为有环使问题变得很复杂,我们来考虑无环的请况:结果就是图中入度为零的节点个数。那我们是不是可以把一个有环图缩成一个无环图呢?在遍历问题中这是等价的。

多个环套在一起的请况怎么办?这让我们想到了强连通分量。在经过强联通分量处理后,所有环都变成了等价的点,这样就可以解决子问题A。

同样的,对于子问题B,一个DAG(有向无环图)只要连接后使得入度出度都不等于零,它就一定是强联通分量。

Usaco5.3.3 Network of Schools

标签:出发点   组成   应该   电脑网络   错误   连接   强连通分量   它的   包括   

原文地址:http://www.cnblogs.com/MyNameIsPc/p/7193796.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!