(DFS) 백준 11403번 경로 찾기

DARTZ·2022년 4월 26일
0

알고리즘

목록 보기
20/135
import sys
sys.setrecursionlimit(10000)

N = int(input())
dfs_list = []

for _ in range(N):
    dfs_list.append(list(map(int, input().split()))) # 주어진 조건대로 리스트를 만들어준다.

def dfs(n):

    if visited[n] == True:
        return False

    visited[n] = True

    for i in range(N):
        if dfs_list[n][i] == 1:
            tracking.append(i) # 경로 저장
            dfs(i)


for n in range(N):
    tracking = [] # 각 행마다 지나온 경로를 탐색하기 위해 tracking이라는 리스트를 만들어주고 매번 초기화 해준다.
    visited = [False] * N # 방문한 지점을 체크하기 위해서 visited 리스트를 만들어준다.
						  # 다만, 0부터 N까지 모든 행을 체크해야하기 때문에 매번 방문 기록을 초기화 해줘야한다.
    dfs(n)
    for k in tracking:
        dfs_list[n][k] = 1 # 경로 탐색이 끝나고 tracking에 있는 요소들을 열로 바꾸어서 1로 입력해준다.

for i in dfs_list:
    for k in range(N):
        print(i[k], end=" ")
    print()
profile
사람들이 비용을 지불하고 사용할 만큼 가치를 주는 서비스를 만들고 싶습니다.

0개의 댓글