def bfs(self, r: int): seen = np.zeros(self.n, np.bool_) l = [] q = ArrayQueue() q.add(r) seen[r] = True while q.size() > 0: i = q.remove() l.append(i) ngh = self.out_edges(i) for k in range(0, ngh.size()): j = ngh.get(k) if seen[j] == False: q.add(j) seen[j] = True return l