Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- fun iterate([],i,listy,visited,wyn) =
- let
- val k1 = if Array.sub(visited,i) = 0 then
- Array.update(wyn,0,i::Array.sub(wyn,0)) else ()
- val k2 = Array.update(visited,i,1)
- in
- wyn
- end
- |
- iterate(top::l,i,listy,visited,wyn) = let
- val k1 = if Array.sub(visited,i) = 0 then
- Array.update(wyn,0,i::Array.sub(wyn,0)) else ()
- val k2 = Array.update(visited,i,1)
- val k = if Array.sub(visited,top) = 0 then iterate(Array.sub(listy,top),top,listy,visited,wyn) else
- wyn
- in
- iterate(l,i,listy,visited,wyn)
- end;
- fun iterate2(i,listy,visited,wyn) =
- if i = Array.length(listy) then wyn
- else let
- val k1 = iterate(Array.sub(listy,i),i,listy,visited,wyn)
- in
- iterate2(i+1,listy,visited,wyn)
- end;
- fun dfs l = let
- val listy = Array.fromList l
- val visited = Array.array (length l,0)
- val wyn = Array.array(1,[])
- in
- rev (Array.sub(iterate2(0,listy,visited,wyn),0))
- (*rev (Array.sub(iterate(Array.sub(listy,0),0,listy,visited,wyn),0)) *)
- end;
Add Comment
Please, Sign In to add comment