ํฐ์คํ ๋ฆฌ ๋ทฐ
728x90
๐ฉ ๊ทธ๋ํ์ด๋ก , ๊ทธ๋ํํ์, DFS, BFS
thinking
์ฒ์์ ์ธ์ ๋ฆฌ์คํธ๋ก ํ์๋๋ฐ ์ธํ๊ฐ์ ๋ญ ๋จผ์ ๋ฐ๋๋์ ๋ฐ๋ผ dfs์์ ์์๊ฐ ๋ฌ๋ผ์ ธ์ ์ธ์ ํ๋ ฌ๋ก ํ์๋ค.
(๊ฐ์ ๊ฑฐ๋ฆฌ์ ๋ ธ๋๋ผ๋ฉด ์ซ์๊ฐ ์์ ์์ผ๋ก ์งํ๋์ผ ํ๊ธฐ ๋๋ฌธ)
dfs๋ ์ฌ๊ท์ฌ์ ๊ทธ๋ฅ ๋ฐ๋ก๋ฐ๋ก ์ถ๋ ฅํ๊ณ ์ ํจ์ ๋ด์ print์ฒ๋ฆฌํ๊ณ , bfs๋ queue๋ฅผ ์ด์ฉํด์ ํ์๋ค.
์ฝ๋
def DFS(V):
visited[V] = 1 # ๋ฐฉ๋ฌธ์ฒดํฌ
print(V, end=' ') # ์ฌ๊ท์ฌ์ ๋ฐ๋ก ์ถ๋ ฅ
for v in range(1, N+1):
if not visited[v] and edge_matrix[V][v] == 1:
DFS(v)
def BFS(V):
queue = [V] # ์ถ๋ฐ์
visited = [V] # ๋ฐฉ๋ฌธ
while queue:
t = queue.pop(0)
for v in range(1, N+1):
if v not in visited and edge_matrix[t][v] == 1:
queue.append(v)
visited.append(v)
return visited
T = int(input())
for tc in range(1, T+1):
N, M, V = map(int, input().split()) # N:์ ์ ๊ฐ์, M:๊ฐ์ ๊ฐ์, V:์์์ ์ ๋ฒํธ
edge_matrix = [[0]*(N+1) for _ in range(N+1)]
for _ in range(M):
s, e = map(int, input().split())
edge_matrix[s][e] = 1
edge_matrix[e][s] = 1
visited = [0] * (N+1) # dfs ๋ฐฉ๋ฌธ์ฒดํฌ์ฉ
DFS(V)
print()
print(*BFS(V))
'algorithm > baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 1620. ๋๋์ผ ํฌ์ผ๋ชฌ ๋ง์คํฐ ์ด๋ค์ / python ํ์ด์ฌ (0) | 2021.04.10 |
---|---|
[๋ฐฑ์ค] 1389. ์ผ๋น ๋ฒ ์ด์ปจ์ 6๋จ๊ณ ๋ฒ์น / python ํ์ด์ฌ (0) | 2021.04.08 |
[๋ฐฑ์ค] 1012. ์ ๊ธฐ๋ ๋ฐฐ์ถ / python ํ์ด์ฌ (0) | 2021.04.08 |
[๋ฐฑ์ค] 1003. ํผ๋ณด๋์น ํจ์ / python ํ์ด์ฌ (0) | 2021.04.08 |
[๋ฐฑ์ค] 1074. Z / python ํ์ด์ฌ (0) | 2021.04.08 |
๋๊ธ
๊ธ ๋ณด๊ดํจ
TAG
- merge ์๋ฌ
- react
- ๋ฐฑ์ค
- ํ์ด์ฌ
- dfs
- ํ๋ก๊ทธ๋๋จธ์ค
- 17406 ๋ฐฐ์ด๋๋ฆฌ๊ธฐ4
- ์๊ณ ๋ฆฌ์ฆ
- 2018 ์นด์นด์ค ๊ณต์ฑ
- BFS
- ์์ด๋๋ง์๊ธฐ
- ์ผ์ฑ์ฝํ
- 21609 ์์ด ์คํ๊ต
- ๊ธฐ์ง๊ตญ์ค์น
- 2579 ๊ณ๋จ์ค๋ฅด๊ธฐ
- git ๋ฏธ๋ฌ๋ง
- ๋ณด์์ผํ
- 20057 ๋ง๋ฒ์ฌ ์์ด์ ํ ๋ค์ด๋
- swea
- Python
- ์ผ์ฑ๊ธฐ์ถ
- merge์๋ฌ
- ๋ธ๋ฃจํธํฌ์ค
- dp
- 20056 ๋ง๋ฒ์ฌ ์์ด์ ํ์ด์ด๋ณผ
์ต๊ทผ์ ์ฌ๋ผ์จ ๊ธ
- Total
- Today
- Yesterday
์ต๊ทผ์ ๋ฌ๋ฆฐ ๋๊ธ