Advertisement
gautamhitesh

QuestionGetAncestors

Jun 17th, 2025
233
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 1.17 KB | Source Code | 0 0
  1. package main
  2.  
  3. import "fmt"
  4.  
  5. type Services interface {
  6.     AddService(service int, dependency int)
  7.     GetAncestors(service int, depth int)
  8. }
  9.  
  10. type ServiceManager struct {
  11.     servicemap map[int][]int
  12. }
  13.  
  14. func (servicemanager *ServiceManager) AddService(service, dependency int) {
  15.     servicemanager.servicemap[service] = append(servicemanager.servicemap[service], dependency)
  16. }
  17.  
  18. func (serviceManager *ServiceManager) GetAncestors(service, depth int) []int { //added depth
  19.     visited := make(map[int]bool) //to avoid dupicate results
  20.     var res []int
  21.     var dfs func(service, depth int)
  22.     dfs = func(service, depth int) {
  23.         if depth == 0 {
  24.             return
  25.         }
  26.         for _, dep := range serviceManager.servicemap[service] {
  27.             if !visited[dep] {
  28.                 visited[dep] = true
  29.                 res = append(res, dep)
  30.                 dfs(dep, depth-1)
  31.             }
  32.         }
  33.     }
  34.  
  35.     dfs(service, depth)
  36.     return res
  37. }
  38.  
  39. func main() {
  40.     serviceManager := &ServiceManager{
  41.         servicemap: make(map[int][]int),
  42.     }
  43.     serviceManager.AddService(0, 1)
  44.     serviceManager.AddService(1, 2)
  45.     fmt.Println(serviceManager.GetAncestors(0, 1))
  46.     serviceManager.AddService(0, 3)
  47.     serviceManager.AddService(3, 4)
  48.     fmt.Println(serviceManager.GetAncestors(0, 2))
  49. }
  50.  
Tags: netskope
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement