Skip to content

Commit fc4481a

Browse files
authored
Create dfs.go
1 parent d369a00 commit fc4481a

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed

Diff for: dfs.go

+46
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
func IsNonCyclic(edges [][]int) bool {
2+
adjList := make(map[int][]int)
3+
for _, edge := range edges{
4+
node1, node2 := edge[0], edge[1]
5+
_, ok := adjList[node1]
6+
if !ok{
7+
adjList[node1] = []int{node2}
8+
}else{
9+
adjList[node1] = append(adjList[node1], node2)
10+
}
11+
}
12+
visited := make(map[int]int)
13+
for node:= range adjList{
14+
if visited[node] == 1{
15+
continue
16+
}
17+
if !dfs(node, adjList, &visited){
18+
return false
19+
}
20+
}
21+
return true
22+
}
23+
func dfs(node int, adjList map[int][]int, visited *map[int]int) bool {
24+
neighbourArr, ok := adjList[node]
25+
if !ok{
26+
return true
27+
}
28+
29+
if (*visited)[node] == -1{
30+
return false
31+
}
32+
33+
if (*visited)[node] == 1{
34+
return true
35+
}
36+
37+
(*visited)[node] = -1
38+
39+
for _, neighbour := range neighbourArr{
40+
if !dfs(neighbour, adjList, visited){
41+
return false
42+
}
43+
}
44+
(*visited)[node] = 1
45+
return true
46+
}

0 commit comments

Comments
 (0)