题意:N(2<N<100)个学校之间有单向的网络,每个学校得到一套软件后,可以通过单向网络向周边的学校传输,问题1:初始至少需要向多少个学校发放软件,使得网络内所有的学校最终都能得到软件。2,至少需要添加几条传输线边,使任意向一个学校发放软件后,经过若干次传送,网络内所有的学校最终都能得到软件。
分析:先求出图的强连通分量(我用的Korasaju,也可以用Tarjan),
然后将所有的强连通分量缩成一个点(缩点),这样原来的有向图就缩成了一个DAG图(有向无环图)。问题1就是求入度为0的点的个数;问题2是问
最少需要连接多少条边才可以使图为一个强连通图。因为
两个强连通合并必然是出度为0的连接入度为0的点,所以要解决掉入度为0,和出度为0的点,所以答案是这两个的最大值(点指缩点)。
#include
#include
#include
#include
#include
#include
#include
#include
#include