CSES - Planeetat

Pelissä on nn planeettaa, jotka on numeroitu 1,2,,n1,2,\dots,n. Pelaaja aloittaa planeetalta 11 ja voittaa pelin, kun pääsee planeetalle nn.

Planeettojen välillä voi liikkua teleporteilla. Jokainen teleportti voidaan kuvata parilla (a,b)(a,b), missä a<ba<b: teleportti vie planeetalta aa planeetalle bb.

Olet päässyt pelin läpi itse, mutta haluat estää, että kukaan voi enää voittaa peliä. Montako teleporttia sinun tulee poistaa vähintään pelistä?

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

Python

Toteuta tiedostoon planets.py luokka Planets, jossa on seuraavat metodit:

  • konstruktori, jolle annetaan määrä nn
  • add_teleport lisää teleportin planeetalta aa planeetalle bb
  • calculate ilmoittaa pienimmän poistettavien teleporttien määrän
class Planets:
    def __init__(self,n):
        # TODO

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

    def calculate(self):
        # TODO

if __name__ == "__main__":
    p = Planets(5)
    print(p.calculate()) # 0
    p.add_teleport(1,2)
    p.add_teleport(2,5)
    print(p.calculate()) # 1
    p.add_teleport(1,5)
    print(p.calculate()) # 2

Java

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

  • konstruktori, jolle annetaan määrä nn
  • addTeleport lisää teleportin planeetalta aa planeetalle bb
  • calculate ilmoittaa pienimmän poistettavan teleporttien määrän
public class Planets {
    public Planets(int n) {
        // TODO
    }

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

    public int calculate() {
        // TODO
    }

    public static void main(String[] args) {
        Planets p = new Planets(5);
        System.out.println(p.calculate()); // 0
        p.addTeleport(1,2);
        p.addTeleport(2,5);
        System.out.println(p.calculate()); // 1
        p.addTeleport(1,5);
        System.out.println(p.calculate()); // 2
    }
}