今天主要是看了很多题目和代码如何写。

    今天本来目标是看割点割边,连通性的问题。于是我大体上看了看,割顶,桥可以算作一类题,连通性的题目,判断图是否连通就不算一类了,在无向图中有 点-双连通分量和 边-双连通分量,算作一类。在有向图中强连通分量算作一类题目。这么算来有3类,我就找出三个题吧。

     其实,从本质上讲,这三类题,都主要用的一个知识,就是用dfn数组作为深度,low数组是本结点和子节点能到达的最小深度(强连通是在栈中),但是,都是用的这种标记深度,根据low数组来做文章的题目。

     但是出的题目一般是在连通分量的数目上考虑,还有缩点之后的图的入度和出度上考虑。很多题的大体模板不会发生变化,主要在进行dfn数组和low数组比较之后的代码里会有变化,还有进行完dfn数组和low数组处理后,怎么判断答案,如何进行操作,往往这里会有很多变化。

      其实今天学习,也算是总结了一个方法。

      1,先进行该算法基本知识的学习。

      2,在把模板手打一边,仔细研究一下代码和细节。明白原理和核心思想。

      3,看一下这类模板题,然后看一些简单的非模板题。理解为什么要在模板上进行这些变化,目的是什么,能解决什么问题。

      4,刷更多这类算法题,包含这类算法的综合题。

   感觉这样学习会比较顺畅,一般不会卡住,一个阶段一个阶段的做下去,看到的知识都可以很轻松的看懂。这也可能是这类题的一般学习方法吧,也有很多知识不能用这种方法。只能先实践一下,慢慢该,以前用的方法,现在看来已经过时了,自己也感觉到效率不高,不好用,可能再过段时间,我会感觉这个方法也不行了吧。