Чтобы реализовать DFS, вам нужно использовать стек неявный (рекурсивно вызывать саму функцию) или явный (использовать объект стека). Для каждого штата у вас есть текущий узел, который вы посещаете. Вам нужно будет посетить каждого соседа текущего узла, а также, если вы посетили текущий узел, вы можете пропустить обработку текущего.
Это в значительной степени алгоритм. Что вам нужно сделать, это перевести это в код.