Kortste-padalgoritme van Dijkstra
Log in om je oplossingen te testen.
import heapq
from functools import total_ordering
@total_ordering
class SpecialSorted:
def __init__(self, element, value):
self.element = element
self.value = value
def __eq__(self, other):
return self.value == other.value
def __ne__(self, other):
return self.value != other.value
def __lt__(self, other):
return self.value < other.value
class PriorityQueue:
def __init__(self, sortkey = lambda x : x):
self.content = []
self.sortkey = sortkey
def add(self, item):
heapq.heappush(self.content, SpecialSorted(item, self.sortkey(item)))
def peek(self):
return self.content[0].element if self.content else None
def poll(self):
return heapq.heappop(self.content).element if len(self.content) > 0 else None
def is_empty(self):
return len(self.content) == 0
def __str__(self):
return str(heapq.nsmallest(len(self.content), [item.element for item in self.content]))
Je kunt zo vaak indienen als je wenst. Er wordt enkel rekening gehouden met je laatst ingediende oplossing.
Log in om je oplossingen te testen.
Python sandbox
In dit venster kan je Python-code uitvoeren zonder iets te moeten installeren. De code die je hier schrijft wordt niet automatisch ingediend in Dodona.