route graph — nodes are bus routes
R0{1,2,7}
R1{3,6,7}
queue of routes (FIFO)
front →
(empty)
← backadjacency list
- shared stop:[7 → R0,R1]
BFS where states are routes
▸1numBusesToDest(routes, source, target):2 build stopToRoutes: stop -> [route ids]3 if source == target: return 04 queue = routes serving source, each with buses = 15 visited = those routes6 while queue not empty:7 route = queue.dequeue() // front8 if target in route: return buses[route]9 for stop in route:10 for r in stopToRoutes[stop]:11 if r not visited:12 buses[r] = buses[route] + 1; enqueue r13 return -1
state
- routesR0{1,2,7}, R1{3,6,7}
- source1
- target6