def build_path(self, G, s): self.marked[s] = True queue = Queue() queue.enqueue(s) while not queue.is_empty(): v = queue.dequeue() for w in G.adj[v]: if not self.marked[w]: self.edge_to[w] = v self.marked[w] = True queue.enqueue(w)
class AnimalShelter: def __init__(self): self.dogs = Queue() self.cats = Queue() self.arrival_time = 0 def enqueue(self, animal): if animal.get_type() == 'dog': self.dogs.enqueue([self.arrival_time, animal]) else: self.cats.enqueue([self.arrival_time, animal]) self.arrival_time += 1 def dequeueAny(self): if self.dogs.is_empty() and self.cats.is_empty(): raise Exception("Animal Shelter is empty") if self.dogs.is_empty(): return self.cats.dequeue()[1] if self.cats.is_empty(): return self.dogs.dequeue()[1] t1, _ = self.dogs.peek() t2, _ = self.cats.peek() if t1 < t2: return self.dogs.dequeue()[1] else: return self.cats.dequeue()[1] def dequeueDog(self): if self.dogs.is_empty(): raise Exception("There is no dogs in animal shelter") return self.dogs.dequeue()[1] def dequeueCat(self): if self.cats.is_empty(): raise Exception("There is no cats in animal shelter") return self.cats.dequeue()[1] def display(self): print "Cats: ", self.cats print "Dogs: ", self.dogs