环的判断
拓扑 / 统计度
1
|
2
/ \
3 --- 4DFS
func dfs(node int, children [][]int, colors []int) bool {
color[node] = Grey // dfs开始时将访问的点标记为灰色,结束时标记为黑色,后续如果再次读到灰色的点说明有环
for _, child := range children[node] {
if (color[child] == Grey) { return true } // 读到灰色的点,说明有环
if (color[child] == White && dfs(child, children, colors)) { return true }
}
color[node] = Black // dfs结束时标记为黑色
}并查集
Samples
Last updated