Low数组就没那么省心了。每个节点都或多或少有一片以自己为根节点的树。Low就代表了,
这棵树能触碰到的最小的Dfn,加上dfs的帮助,于是这个Low就可以一直上传上去。
而为了存储整个强连通分量,这里挑选的容器是,堆栈。每次一个新节点出现,就进站,如果这个点有 出度 就继续往下找。直到找到底,每次返回上来都看一看子节点与这个节点的LOW值,谁小就取谁,保证最小的子树根。如果找到DFN[]==LOW[]就说明这个节点是这个强连通分量的根节点(毕竟这个LOW[]值是这个强连通分量里最小的。)最后找到强连通分量的节点后,就将这个栈里,比此节点后进来的节点全部出栈,它们就组成一个全新的强连通分量。
核心就是如果这个点有出度就继续往下找,直到找到底,每次返回上来看一看子节点与这个节点的low,如果找到dfn和low相等就说明这个节点是这个强连通分量的根节点,
这个low是最小的,如果有更小的话这个low会被跟新掉,所以相等的情况是根节点。