CSES - Lentokentät

Bittimaassa on nn lentokenttää, joiden välillä ei ole vielä yhteyksiä. Tehtäväsi on toteuttaa luokka, jonka avulla pystyy lisäämään yksisuuntaisen lentoyhteyden kahden lentokentän välille sekä selvittämään, onko jokaiselta lentokentältä mahdollista lentää mille tahansa toiselle lentokentälle (mahdollisesti välilaskujen kautta).

Voit olettaa, että lentokenttiä on enintään 5050 ja luokan metodeita kutsutaan enintään 100100 kertaa.

Python

Toteuta tiedostoon airports.py luokka Airports, jossa on seuraavat metodit:

  • konstruktori, jolle annetaan lentokenttien määrä
  • add_link lisää yhteyden lentokentältä aa lentokentälle bb
  • check tutkii, voiko jokaiselta lentokentältä saavuttaa kaikki muut lentokentät
class Airports:
    def __init__(self,n):
        # TODO

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

    def check(self):
        # TODO

if __name__ == "__main__":
    a = Airports(5)
    a.add_link(1,2)
    a.add_link(2,3)
    a.add_link(1,3)
    a.add_link(4,5)
    print(a.check()) # False
    a.add_link(3,5)
    a.add_link(1,4)
    print(a.check()) # False
    a.add_link(5,1)
    print(a.check()) # True

Java

Toteuta tiedostoon Airports.java luokka Airports, jossa on seuraavat metodit:

  • konstruktori, jolle annetaan lentokenttien määrä
  • addLink lisää yhteyden lentokentältä aa lentokentälle bb
  • check tutkii, voiko jokaiselta lentokentältä saavuttaa kaikki muut lentokentät
public class Airports {
    public Airports(int n) {
        // TODO
    }

    public void addLink(int a, int b) {
        // TODO
    }

    public boolean check() {
        // TODO
    }

    public static void main(String[] args) {
        Airports a = new Airports(5);
        a.addLink(1,2);
        a.addLink(2,3);
        a.addLink(1,3);
        a.addLink(4,5);
        System.out.println(a.check()); // false
        a.addLink(3,5);
        a.addLink(1,4);
        System.out.println(a.check()); // false
        a.addLink(5,1);
        System.out.println(a.check()); // true
    }
}