경로 찾기
1. 조건
- N : 정점의 갯수 ( 1 <= N <= 100)
- G : 가중치 없는(동일한) 방향 그래프 ( N x N )
- 0 : (i -> j)간선 없음 / 1 : 간선 있음
2. 출력
- 경로가 있으면 1, 없으면 0으로 인접행렬 형식으로 출력
3. 방식
- BFS의 방식을 사용하여 여러 경로를 거쳐 갈 수 있는지 확인
- 2차원 배열 G에 그 결과를 적용하고 출력 (1번에 갈 수 있는 경우가 G)
4. 코드
from collections import deque
def BFS(k):
global point, G
Q = deque([k])
check = [0] * N
while Q:
s = Q.popleft()
check[s] = 1
for m in arr[s]:
if m == point:
return 1
elif not check[m]:
Q.append(m)
return 0
N = int(input())
G = [list(map(int, input().split())) for _ in range(N)]
arr = [[] for _ in range(N)]
for i in range(N):
for j in range(N):
if G[i][j]:
arr[i].append(j)
for k in range(N):
for l in range(N):
if not G[k][l]:
point = l
if BFS(k):
G[k][l] = 1
for g in G:
print(*g)