CSES - Syklit Tehtäväsi on toteuttaa luokka, jonka avulla pystyy lisäämään kaaren suunnattuun verkkoon sekä tutkimaan, onko verkossa suunnattua sykliä.

Voit olettaa, että solmuja on enintään $50$ ja luokan metodeita kutsutaan enintään $100$ kertaa.

Python

Toteuta tiedostoon cycles.py luokka Cycles, jossa on seuraavat metodit:
  • konstruktori, jolle annetaan solmujen määrä
  • add_edge lisää kaaren solmusta $a$ solmuun $b$
  • check tarkastaa, onko verkossa suunnattua sykliä
class Cycles:
    def __init__(self,n):
        # TODO

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

    def check(self):
        # TODO

if __name__ == "__main__":
    c = Cycles(4)
    c.add_edge(1,2)
    c.add_edge(2,3)
    c.add_edge(1,3)
    c.add_edge(3,4)
    print(c.check()) # False
    c.add_edge(4,2)
    print(c.check()) # True
Java

Toteuta tiedostoon Cycles.java luokka Cycles, jossa on seuraavat metodit:
  • konstruktori, jolle annetaan solmujen määrä
  • addEdge lisää kaaren solmusta $a$ solmuun $b$
  • check tarkastaa, onko verkossa suunnattua sykliä
public class Cycles {
    public Cycles(int n) {
        // TODO
    }

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

    public boolean check() {
        // TODO
    }

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