import java.util.*;

public class Verkko {
    static ArrayList<Integer>[] verkko;
    static int[] tila; // 0 = ei käyty, 1 = on käyty

    static void syvyyshaku(int solmu) {
        System.out.println("yritetään mennä solmuun "+solmu);
        if (tila[solmu] == 1) return;
        System.out.println("päästiin solmuun "+solmu);
        tila[solmu] = 1;
        for (int naapuri : verkko[solmu]) {
            syvyyshaku(naapuri);
        }
    }

    public static void main(String[] args) {
        int n = 5;
        verkko = new ArrayList[n+1];
        tila = new int[n+1];
        for (int i = 1; i <= n; i++) {
            verkko[i] = new ArrayList<>();
        }
        //
        //   1----3
        //   |    |
        //   |    |
        //   2----4----5
        //
        verkko[1].add(3); verkko[3].add(1);
        verkko[2].add(1); verkko[1].add(2);
        verkko[3].add(4); verkko[4].add(3);
        verkko[4].add(2); verkko[2].add(4);
        verkko[4].add(5); verkko[5].add(4);

        //
        //   1--->3
        //   ^    |
        //   |    v
        //   2<---4--->5
        //
        // verkko[1].add(3);
        // verkko[2].add(1);
        // verkko[3].add(4);
        // verkko[4].add(2);
        // verkko[4].add(5);

        syvyyshaku(1);
    }
}
