https://www.acmicpc.net/problem/11403
11403๋ฒ: ๊ฒฝ๋ก ์ฐพ๊ธฐ
๊ฐ์ค์น ์๋ ๋ฐฉํฅ ๊ทธ๋ํ G๊ฐ ์ฃผ์ด์ก์ ๋, ๋ชจ๋ ์ ์ (i, j)์ ๋ํด์, i์์ j๋ก ๊ฐ๋ ๊ธธ์ด๊ฐ ์์์ธ ๊ฒฝ๋ก๊ฐ ์๋์ง ์๋์ง ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
www.acmicpc.net
| ๋ฌธ์ ๋ด์ฉ
| ํ์ด
1. ํ๋ก์ด๋ ์์ (floyd warshall) ์๊ณ ๋ฆฌ์ฆ ์ด์ฉ
๊ฐ์ฅ ๊ฐ๋จํ์ง๋ง O(n^3)์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ค.
import sys
input = sys.stdin.readline
n = int(input())
graph = []
for i in range(n):
graph.append(list(map(int, input().split())))
# floyd warshall
for k in range(n):
for i in range(n):
for j in range(n):
if graph[i][k] == 1 and graph[k][j] == 1:
graph[i][j] = 1
for row in graph:
print(' '.join(map(str, row)))
2. BFS
import sys
from collections import deque
input = sys.stdin.readline
n = int(input())
graph = []
for i in range(n):
graph.append(list(map(int, input().split())))
# bfs 0๋ถํฐ ์์ํด์ ์ฐ๊ฒฐ๋์ด์๋ ์ ๋ค๋ถํฐ ๊ฒ์ฌํด๋๊ฐ
visited = [[0] * n for _ in range(n)]
def bfs(x):
queue = deque()
queue.append(x)
is_connected = [0 for _ in range(n)] # ์ ์ n์ ๊ธฐ์ค์ผ๋ก 0 ~ n๊น์ง ์ฐ๊ฒฐ๋์ด์๋์ง ํ์ธ
while queue:
vertex = queue.popleft()
for i in range(n):
if is_connected[i] == 0 and graph[vertex][i] == 1: # ์ฐ๊ฒฐ ์ ๋์ง๋ง ์ฐ๊ฒฐ ๊ฐ๋ฅํ ์ํ์ธ ์ ์
is_connected[i] = 1
visited[x][i] = 1
queue.append(i)
# ๋ชจ๋ ์ ์ ์ ๋๋ฉด์ ์ฒดํฌ
for i in range(n):
bfs(i)
for row in visited:
print(' '.join(map(str, row)))
3. DFS
import sys
from collections import deque
input = sys.stdin.readline
n = int(input())
graph = []
for i in range(n):
graph.append(list(map(int, input().split())))
visited = [[0] * n for _ in range(n)]
def dfs(x):
stack = []
stack.append(x)
is_connected = [0 for _ in range(n)]
while stack:
vertex = stack.pop()
for i in range(n):
if is_connected[i] == 0 and graph[vertex][i] == 1:
is_connected[i] = 1
visited[x][i] = 1
stack.append(i)
# ๋ชจ๋ ์ ์ ์ ๋๋ฉด์ ์ฒดํฌ
for i in range(n):
dfs(i)
for row in visited:
print(' '.join(map(str, row)))
| ๋๋์
์ฌ์ค ํ๋ก์ด๋ ์์ ๋ง๊ณ ๋ ์๊ฐ์ด ์๋ฌ์ด์ BFS, DFS๋ ๊ฒ์ํด๋ณด๊ณ ์ถ๊ฐํ์๋ค. ์๊ฐ์ด ์ค์ํ ๋ฌธ์ ์๊ณ N์ ๋ฒ์๊ฐ ์ปธ๋ค๋ฉด ์๋ง ํ๋ ธ์ ๊ฒ ๊ฐ์ ๊ทธ๋ํ ํ์ ๋ฌธ์ ๋ฅผ ์ข ๋ ๊น๊ฒ ๊ณต๋ถํด์ผ๊ฒ ๋ค๋ ์๊ฐ์ด ๋ค์๋ค.
'์๊ณ ๋ฆฌ์ฆ > ๋ฌธ์ ํ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python] ๋ฐฑ์ค 2110๋ฒ ๊ณต์ ๊ธฐ ์ค์น (2) | 2023.10.22 |
---|---|
[Python] ๋ฐฑ์ค 1236๋ฒ ์ฑ ์งํค๊ธฐ (1) | 2023.10.15 |
[Python] ๋ฐฑ์ค 1946๋ฒ ์ ์ ์ฌ์ (1) | 2023.10.14 |
[Python] ๋ฐฑ์ค 1764๋ฒ ๋ฃ๋ณด์ก (0) | 2023.10.08 |
[Python] ๋ฐฑ์ค 2178๋ฒ ๋ฏธ๋กํ์ (0) | 2023.10.07 |