CSES - Kaikki puut

Tehtäväsi on toteuttaa luokka, jonka avulla pystyy lisäämään kaaren verkkoon sekä laskemaan, montako erilaista virittävää puuta verkolle voidaan muodostaa.

Voit olettaa, että verkossa on enintään 55 solmua ja siihen lisätään enintään 1010 kaarta. Jokainen kaari on suuntaamaton ja verkossa ei ole kahta samanlaista kaarta.

Toteuta tiedostoon alltrees.py luokka AllTrees, jossa on seuraavat metodit:

  • konstruktori, jolle annetaan solmujen määrä
  • add_edge lisää verkkoon kaaren
  • count ilmoittaa virittävien puiden määrän
class AllTrees:
    def __init__(self,n):
        # TODO

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

    def count(self):
        # TODO

if __name__ == "__main__":
    a = AllTrees(3)
    a.add_edge(1,2)
    print(a.count()) # 0
    a.add_edge(1,3)
    print(a.count()) # 1
    a.add_edge(2,3)
    print(a.count()) # 3