Поиск в глубину(DFS) - это один из основных алгоритмов на графах. Алгоритм работает за O(N + M).
Как работает сам алгоритм. Для начала мы запускаемся от вершины, рассматриваем детей этой вершины, и если мы никогда в них не заходили, то запускаем от них DFS. В нашем примере g[i][j] обозначает, что между вершинами i и j есть ребро, а в массиве used мы отмечаем заходили ли мы в эту вершину.