能力提升综合题单:图论
图的存储与遍历
这两题属于非常相近的题,都是仅使用一个next数组记录某个点的下一个相连的点是哪个的点的建图方式。第一题引入了一个模板基环树(每个点出度均是1的有向图)求最小环。第二题是求每个点遍历到每个环,求路径点和的问题。
两道题都有很多解法,求最小环有模拟,tarjan缩点,并查集的解法。暂时只写了y总的栈模拟解法。
第二题是直接使用了题解给的一种纯思维的解法,很朦胧,我感觉我对点数量和边数量这种数量关系不是很敏感,也不清楚为什么需要存那些信息。先记录到这里。
GG的了,咋发现对于一个普通图,如果用:
void dfs(int u,int fa){
//
}
会重复遍历,必须用
v
i
s
[
]
vis[\ ]
vis[ ] 数组。
用
d
f
s
dfs
dfs 求拓扑序的方法。遍历一个图,在回溯的时候将节点加入到
a
n
s
ans
ans 数组中。数组的逆序就是一个拓扑序。