示例#1
0
 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)
示例#2
0
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