๋ฌธ์
https://www.acmicpc.net/problem/11403
11403๋ฒ: ๊ฒฝ๋ก ์ฐพ๊ธฐ
๊ฐ์ค์น ์๋ ๋ฐฉํฅ ๊ทธ๋ํ G๊ฐ ์ฃผ์ด์ก์ ๋, ๋ชจ๋ ์ ์ (i, j)์ ๋ํด์, i์์ j๋ก ๊ฐ๋ ๊ฒฝ๋ก๊ฐ ์๋์ง ์๋์ง ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
www.acmicpc.net
ํ์ด
์ด๋ฒ ๋ฌธ์ ๋ ํธ๋๋ฐ ์กฐ๊ธ ์๊ฐ๋ ๋ง์ด ํด๋ณด๊ณ ์ฌ๋ฌ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ํ์ด๋ณด๊ณ ์ถ์ด์ ์๊ฐ์ด ์ค๋๊ฑธ๋ ธ๋ค.
๋ํ ํ๋ก์ด๋-์์ ์๊ณ ๋ฆฌ์ฆ์ ์ฒ์ ์ ํด๋ด์ ์ดํดํ๋๋ฐ ์ค๋๊ฑธ๋ฆฐ ๋ถ๋ถ๋ ์์๋ค.
DFS ๋ BFS๋ก๋ ํ์ด๊ฐ ๊ฐ๋ฅํ์ง๋ง ํ๋ก์ด๋-์์ ์๊ณ ๋ฆฌ์ฆ๋ ์ฌ์ฉํด ๋ณด์๋ค.
DFS๋ฅผ ์ด์ฉํ ํ์ด
# ๋ฐฑ์ค 11403๋ฒ ๋ฌธ์ - ๊ฒฝ๋ก ์ฐพ๊ธฐ
# DFS
n = int(input())
graph = [list(map(int, input().split())) for _ in range(n)]
visited = [0 for _ in range(n)]
def dfs(x):
for i in range(n):
if graph[x][i] == 1 and visited[i] == 0:
visited[i] = 1
dfs(i)
return visited
for i in range(n):
visited = [0 for _ in range(n)]
dfs(i)
for j in range(n):
if visited[j] == 1:
print(1, end=' ')
else:
print(0, end=' ')
print()
BFS๋ฅผ ์ด์ฉํ ํ์ด
# BFS
from collections import deque
n = int(input())
graph = [list(map(int, input().split())) for _ in range(n)]
visited = [[0]*n for _ in range(n)]
def bfs(x):
queue = deque([x])
check = [0 for _ in range(n)]
while queue:
q = queue.popleft()
for i in range(n):
if check[i] == 0 and graph[q][i] == 1:
queue.append(i)
check[i] = 1
visited[x][i] = 1
for i in range(n):
bfs(i)
for i in visited:
print(*i)
ํ๋ก์ด๋ ์์ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ ํ์ด
# ํ๋ก์ด๋ ์์
์๊ณ ๋ฆฌ์ฆ
import sys
input = sys.stdin.readline
N = int(input().rstrip())
matrix = [list(map(int, input().rstrip().split())) for _ in range(N)]
for k in range(0, N): # ๊ฒฝ์ ์ง ๋
ธ๋
for i in range(0, N): # ์ถ๋ฐ ๋
ธ๋
for j in range(0, N): # ๋์ฐฉ ๋
ธ๋
if matrix[i][k]==1 and matrix[k][j]==1:
matrix[i][j] = 1
for m in matrix:
print(*m)
'๐๏ธ Algorithm > ๐ฉ ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐ฉ [๋ฐฑ์ค] [Python] [BFS/DFS] 18352๋ฒ_ํน์ ๊ฑฐ๋ฆฌ์ ๋์ ์ฐพ๊ธฐ (0) | 2022.11.16 |
---|---|
๐ฉ [๋ฐฑ์ค] [Python] [Class3] 5430๋ฒ_AC (0) | 2022.11.16 |
๐ฉ [๋ฐฑ์ค] [Python] [Class3] 11286๋ฒ_์ ๋๊ฐ ํ (0) | 2022.11.14 |
๐ฉ [๋ฐฑ์ค] [Python] [Class3] 6064๋ฒ_์นด์ ๋ฌ๋ ฅ (0) | 2022.11.14 |
๐ฉ [๋ฐฑ์ค] [Python] 11725๋ฒ_ํธ๋ฆฌ์ ๋ถ๋ชจ์ฐพ๊ธฐ (0) | 2022.11.14 |