Verkossa on n tietokonetta, joiden välillä ei ole vielä yhteyksiä. Tehtäväsi on toteuttaa luokka, jonka avulla pystyy lisäämään yhteyden kahden koneen välille sekä etsimään suorimman reitin kahden koneen välillä.
Voit olettaa, että tietokoneita on enintään 50 ja luokan metodeita kutsutaan enintään 100 kertaa.
Python
Toteuta tiedostoon network.py
luokka Network
, jossa on seuraavat metodit:
- konstruktori, jolle annetaan tietokoneiden määrä
add_link
lisää yhteyden kahden koneen välillebest_route
palauttaa pienimmän yhteyksien määrän reitillä kahden koneen välillä (tai -1 jos reittiä ei ole)
class Network: def __init__(self,n): # TODO def add_link(self,a,b): # TODO def best_route(self,a,b): # TODO if __name__ == "__main__": w = Network(5) w.add_link(1,2) w.add_link(2,3) w.add_link(1,3) w.add_link(4,5) print(w.best_route(1,5)) # -1 w.add_link(3,5) print(w.best_route(1,5)) # 2
Java
Toteuta tiedostoon Network.java
luokka Network
, jossa on seuraavat metodit:
- konstruktori, jolle annetaan tietokoneiden määrä
addLink
lisää yhteyden kahden koneen välillebestRoute
palauttaa pienimmän yhteyksien määrän reitillä kahden koneen välillä (tai -1 jos reittiä ei ole)
public class Network { public Network(int n) { // TODO } public void addLink(int a, int b) { // TODO } public int bestRoute(int a, int b) { // TODO } public static void main(String[] args) { Network w = new Network(5); w.addLink(1,2); w.addLink(2,3); w.addLink(1,3); w.addLink(4,5); System.out.println(w.bestRoute(1,5)); // -1 w.addLink(3,5); System.out.println(w.bestRoute(1,5)); // 2 } }