Merge pull request #74 from born69confused/patch-1

785.Is Graph Bipartite?
This commit is contained in:
halfrost
2020-10-06 11:08:05 +08:00
committed by GitHub

View File

@@ -0,0 +1,44 @@
func isBipartite(graph [][]int) bool {
colors := make([]int,len(graph))
for i := range colors {
colors[i] = -1
}
for i := range graph {
if !dfs(i, graph, colors, -1) {
fmt.Println(colors)
return false
}
}
fmt.Println(colors)
return true
}
func dfs(n int, graph [][]int, colors []int, parentCol int) bool {
if colors[n] == -1 {
if parentCol == 1 {
colors[n] = 0
} else {
colors[n] = 1
}
} else if colors[n] == parentCol {
fmt.Println(n)
return false
} else if colors[n] != parentCol {
return true
}
for _, c := range graph[n] {
if !dfs(c, graph, colors, colors[n]) {
fmt.Println(c)
return false
}
}
return true
}