CSES - Paras reitti

Bittimaassa on nn kaupunkia, joiden välillä ei ole vielä teitä. Tehtäväsi on toteuttaa luokka, jonka avulla pystyy lisäämään tien kahden kaupungin välille sekä etsimään lyhimmän reitin kahden kaupungin välillä.

Luokassa tulee olla seuraavat metodit:

  • add_road: lisää tien kaupungista aa kaupunkiin bb, jonka pituus on xx
  • find_route: palauttaa lyhimmän reitin pituuden kaupungista aa kaupunkiin bb (jos mitään reittiä ei ole olemassa, metodin tulee palauttaa 1-1)

Kaupungit on numeroitu 1,2,,n1,2,\dots,n. Huomaa, että kaikki tiet ovat kaksisuuntaisia eli ei ole väliä, kummin päin kaupungit annetaan.

Toteuta tiedostoon bestroute.py luokka BestRoute, joka toimii seuraavan esimerkin mukaisesti.

class BestRoute:
    def __init__(self, n):
        # TODO

    def add_road(self, a, b, x):
        # TODO

    def find_route(self, a, b):
        # TODO

if __name__ == "__main__":
    b = BestRoute(3)
    b.add_road(1, 2, 2)
    print(b.find_route(1, 3)) # -1
    b.add_road(1, 3, 5)
    print(b.find_route(1, 3)) # 5
    b.add_road(2, 3, 1)
    print(b.find_route(1, 3)) # 3