Bittimaassa on 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ä muodostamaan taulukon kaupunkien välimatkoista.
Välimatkataulukko on kokoinen taulukko, jonka rivillä sarakkeessa lukee lyhin reitin pituus kaupunkien ja välillä. Jos mitään reittiä ei ole olemassa, reitin pituus on .
Tässäkin tehtävässä kaikki tiet ovat kaksisuuntaisia eli ei ole väliä, kummin päin kaupungit annetaan. Huomaa, että kahden kaupungin välillä voi olla useita teitä.
Voit olettaa, että kaupunkeja on enintään ja luokan metodeita kutsutaan enintään kertaa. Jokaisen tien pituus on kokonaisluku välillä .
Python
Toteuta tiedostoon allroutes.py
luokka AllRoutes
, jossa on seuraavat metodit:
- konstruktori, jolle annetaan kaupunkien määrä
add_road
lisää kaupunkien ja välille tien, jonka pituus onget_table
palauttaa välimatkataulukon kaksiulotteisena listana
class AllRoutes: def __init__(self,n): # TODO def add_road(self,a,b,x): # TODO def get_table(self): # TODO if __name__ == "__main__": a = AllRoutes(4) a.add_road(1,2,2) a.add_road(1,3,5) a.add_road(2,3,1) print(a.get_table()) # [[0,2,3,-1],[2,0,1,-1],[3,1,0,-1],[-1,-1,-1,0]]
Java
Toteuta tiedostoon AllRoutes.java
luokka AllRoutes
, jossa on seuraavat metodit:
- konstruktori, jolle annetaan kaupunkien määrä
addRoad
lisää kaupunkien ja välille tien, jonka pituus ongetTable
palauttaa välimatkataulukon kaksiulotteisena taulukkona
import java.util.*; public class AllRoutes { public AllRoutes(int n) { // TODO } public void addRoad(int a, int b, int x) { // TODO } public int[][] getTable() { // TODO } public static void main(String[] args) { AllRoutes a = new AllRoutes(4); a.addRoad(1,2,2); a.addRoad(1,3,5); a.addRoad(2,3,1); System.out.println(Arrays.deepToString(a.getTable())); // [[0,2,3,-1],[2,0,1,-1],[3,1,0,-1],[-1,-1,-1,0]] } }