Tehtäväsi on toteuttaa luokka, jonka avulla pystyy lisäämään kaaren verkkoon sekä laskemaan, montako erilaista virittävää puuta verkolle voidaan muodostaa.
Toteuta luokka AllTrees, jossa on seuraavat metodit:
add_edgelisää verkkoon kaarencountilmoittaa virittävien puiden määrän
Verkko on suuntaamaton ja voit myös olettaa, että siinä ei ole kahta samanlaista kaarta.
Tässä tehtävässä riittää toteuttaa raa'an voiman ratkaisu. Sinun tulee käyttää menetelmää, jonka toiminnan ymmärrät itse (ei matriiseihin perustuvaa ratkaisua, jos et osaa todistaa sitä).
Toteuta luokka tiedostoon spanning.py seuraavan esimerkin mukaisesti.
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
