Tarjan可以用来求无向图的割点和割边
割边:(dfn[u]<low[v])
割点:(low[v]>=dfn[u])
求树的直径
做法1:BFS
从任意一个点开始BFS,然后找到最长链,然后从最长链的另一个节点开始BFS,求另外一条最长链
加起来就是答案
做法2:树上DP
维护一个点以其子树构成的最长链
然后答案就是用一个点以其两个子节点形成的最长链来更新
割边:(dfn[u]<low[v])
割点:(low[v]>=dfn[u])
从任意一个点开始BFS,然后找到最长链,然后从最长链的另一个节点开始BFS,求另外一条最长链
加起来就是答案
维护一个点以其子树构成的最长链
然后答案就是用一个点以其两个子节点形成的最长链来更新