1.DAG上必然存在出度为0的结点。
2.DAG上若存在唯一出度为0的结点,则该结点可被DAG上其他所有结点到达。
3.问在DAG上最少选择多少个点能够使得从这些点出发可以到达所有点,那么答案就是入度为0的点的个数。
4.假设DAG上出度为0的结点有a个,入度为0的结点有b个,那么在加max(a,b)条边可以使得该有向图强连通。
加边的方法:
要为每个入度为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)就是第二个问题的解