https://www.acmicpc.net/problem/11403
우선 저는 BFS로 풀었습니다.
각 정점마다 방문했는지 visited에 저장하고 연결이 되었다면 결과 배열에 1로 표시하였습니다.
def bfs(v):
queue = deque([v]) # 시작 지점
visited = [False] * n # 모든 정점마다 방문 여부를 확인해야 되므로 함수 내에 선언
while queue:
node = queue.popleft()
for i in range(n):
if graph[node][i] and not visited[i]: # 길이 있고 방문하지 않았다면
visited[i] = True # 방문 표시
res[v][i] = 1 # 경로 존재 표시
queue.append(i)
from collections import deque
import sys
input = sys.stdin.readline
def bfs(v):
queue = deque([v])
visited = [False] * n
while queue:
node = queue.popleft()
for i in range(n):
if graph[node][i] and not visited[i]:
visited[i] = True
res[v][i] = 1
queue.append(i)
if __name__ == "__main__":
n = int(input())
graph = [list(map(int,input().split())) for _ in range(n)]
res = [[0] * n for _ in range(n)]
for i in range(n):
bfs(i)
for r in res:
print(*r)