์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- Import
- modify
- dev
- ์๋ฐฉํฅํ์
- ๋ชจ๋ํ
- ์คํธ๋ญ์ฒ
- tasknumber
- call function
- ์๊ณ ๋ฆฌ์ฆ
- Export
- Internal Table
- Function Module
- subscreen
- PRD
- ๋ฐฑ์ค
- ์ด๋ถํ์
- screen program
- abap dictionary
- ๋๋น์ฐ์ ํ์
- structure
- screen
- SAP
- select
- ์ค๋ฒ3
- ์ค๋ฒ2
- ๊น์ด์ฐ์ ํ์
- qas
- ABAP
- t์ฝ๋
- ๋จ๋ฐฉํฅํ์
- Today
- Total
CS Student’s SAP&Tech Journey๐ซ
[๋ฐฑ์ค] 24444๋ฒ: ๋๋น ์ฐ์ ํ์1 / ๋๋น์ฐ์ ํ์ BFS ๋ณธ๋ฌธ
[๋ฐฑ์ค] 24444๋ฒ: ๋๋น ์ฐ์ ํ์1 / ๋๋น์ฐ์ ํ์ BFS
์ธํฌ๋งํฑ 2024. 11. 5. 17:1199ํด๋ฝ ์ฝํ ์คํฐ๋ 4์ผ
1. ๋ฐฑ์ค 24444๋ฒ ์๊ณ ๋ฆฌ์ฆ ์์ - ๋๋น ์ฐ์ ํ์ 1
[๋ฐฑ์ค] 24444๋ฒ: ์๊ณ ๋ฆฌ์ฆ ์์ - ๋๋น ์ฐ์ ํ์
2. ์ค๋์ ํ๊ณ
0. ๋ฌธ์ ๋ถ์
N๊ฐ์ ์ ์ ๊ณผ M๊ฐ์ ๊ฐ์ ์ผ๋ก ๊ตฌ์ฑ๋ ๋ฌด๋ฐฉํฅ ๊ทธ๋ํ(undirected graph)๊ฐ ์ฃผ์ด์ง๋ค. ์ ์ ๋ฒํธ๋ 1๋ฒ๋ถํฐ N๋ฒ์ด๊ณ ๋ชจ๋ ๊ฐ์ ์ ๊ฐ์ค์น๋ 1์ด๋ค. ์ ์ R์์ ์์ํ์ฌ ๋๋น ์ฐ์ ํ์์ผ๋ก ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํ ๊ฒฝ์ฐ ๋ ธ๋์ ๋ฐฉ๋ฌธ ์์๋ฅผ ์ถ๋ ฅํ์.
๋๋น ์ฐ์ ํ์ ์์ฌ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ๋ค. ์ธ์ ์ ์ ์ ์ค๋ฆ์ฐจ์์ผ๋ก ๋ฐฉ๋ฌธํ๋ค.
: ์ธ์ ์ ์ ์ ์ค๋ฆ์ฐจ์์ผ๋ก ๋ฐฉ๋ฌธ์์ผ์ผํ๋ฏ๋ก ์ ๋ ฌํด์ฃผ์ด์ผ ํ๋ค.
1. ์ ๋ ฅ
์ฒซ์งธ ์ค์ ์ ์ ์ ์ N (5 ≤ N ≤ 100,000), ๊ฐ์ ์ ์ M (1 ≤ M ≤ 200,000), ์์ ์ ์ R (1 ≤ R ≤ N)์ด ์ฃผ์ด์ง๋ค.
๋ค์ M๊ฐ ์ค์ ๊ฐ์ ์ ๋ณด u v๊ฐ ์ฃผ์ด์ง๋ฉฐ ์ ์ u์ ์ ์ v์ ๊ฐ์ค์น 1์ธ ์๋ฐฉํฅ ๊ฐ์ ์ ๋ํ๋ธ๋ค.
(1 ≤ u < v ≤ N, u ≠ v) ๋ชจ๋ ๊ฐ์ ์ (u, v) ์์ ๊ฐ์ ์๋ก ๋ค๋ฅด๋ค.
: ์๋ฐฉํฅ ๊ฐ์ ์์ ํ์ธํ๊ณ ๋ฌธ์ ๋ฅผ ํ์ด์ผ ํ๋ค.
2. ์ถ๋ ฅ
์ฒซ์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์ ์ ์๋ฅผ ํ ๊ฐ์ฉ ์ถ๋ ฅํ๋ค. i๋ฒ์งธ ์ค์๋ ์ ์ i์ ๋ฐฉ๋ฌธ ์์๋ฅผ ์ถ๋ ฅํ๋ค. ์์ ์ ์ ์ ๋ฐฉ๋ฌธ ์์๋ 1์ด๋ค. ์์ ์ ์ ์์ ๋ฐฉ๋ฌธํ ์ ์๋ ๊ฒฝ์ฐ 0์ ์ถ๋ ฅํ๋ค.
: ๋ฐฉ๋ฌธํ ๋ ธ๋ ์์๋๋ก ์ถ๋ ฅํ๋ ๊ฒ์ด ์๋๋ผ ๋ ธ๋ i์ ๋ฐฉ๋ฌธ ์์๋ฅผ ์ถ๋ ฅํด์ผ ํ๋ค.
3. ๋ฌธ์ ์ ๊ทผ
๋๋น์ฐ์ ํ์ BFS๋ฅผ ํ์ตํ๋ ๋ฌธ์ ์ด๋ค.
queue ์๋ฃ ๊ตฌ์กฐ๋ฅผ ์ด์ฉํ์ฌ ํ์ดํด์ผ ํ๋ค.
์๊ฐ์ด๊ณผ๋ฌธ์
input = sys.stdin.readline
์๋ฐฉํฅ ๊ฐ์
์๋ฐฉํฅ ๊ฐ์ ์ด๋ผ๋๊ฑด ์ ์ u์ ์ ์ v๊ฐ ์๋ก ์ฐ๊ฒฐ๋์ด ์๋ค๋ ์๋ฏธ์ด๋ค.
์๋ฅผ ๋ค์ด ๊ฐ์ ์ ๋ ฅ 1 4๋ฅผ ์ค๋ค๊ณ ๊ฐ์ ํ์.
graph๋ฅผ ๊ตฌ์ฑํ ๋ graph[1]์ ์ ์ 1๊ณผ ์ฐ๊ฒฐ๋์ด ์๋ ๋ฆฌ์คํธ๋ฅผ ์๋ฏธํ๊ณ , graph[4]๋ ์ ์ 4์ ์ฐ๊ฒฐ๋์ด ์๋ ๋ฆฌ์คํธ๋ฅผ ์๋ฏธํ๋ค. ๋ฐ๋ผ์ graph[1]์ 4๋ฅผ ์ถ๊ฐํ๊ณ graph[4]์ 1์ ์ถ๊ฐํด์ผ ํ๋ค.
graph = [[] for_i in range(N+1)]
for i in range(M):
a,b = map(int, input().split())
graph[a].append(b)
graph[b].append(a)
์ค๋ฆ์ฐจ์
while๋ฌธ ๋ฐ์์ graph๋ฅผ ์ ๋ ฌํด์ผ ๋ฐ๋ณต ์ ๋ ฌ์ ํผํ ์ ์๋ค.
for i in range(1, N + 1):
graph[i].sort()
BFS ํจ์
1. ๊ฐ ๋ ธ๋๋ฅผ ์ฒ์์ 0์ผ๋ก ์ด๊ธฐํ ํ visited์ ์ ์ฅํ๊ณ ์ฒซ๋ฒ์งธ ๋ ธ๋๋ cnt = 1 ๊ฐ์ ์ค๋ค. cnt๋ ๋ฐฉ๋ฌธ ์์์ด๋ค.
2. ํ์์ ๋ ธ๋๋ฅผ ๊บผ๋ธ ํ ํด๋น ๋ ธ๋์ ์ธ์ ๋ ธ๋ ์ค ๋ฐฉ๋ฌธํ์ง ์์ ๋ ธ๋๋ฅผ ๋ชจ๋ ํ์ ์ฝ์ ํ๊ณ ๋ฐฉ๋ฌธ ์์๋ฅผ ์ ์ฅํ๋ค.
3. queue๊ฐ ๋น๊ฒ ๋๋ฉด while๋ฌธ์ด ์ข ๋ฃ๋๋ค.
from collections import deque
import sys
input = sys.stdin.readline
N,M,start = map(int, input().split())
graph = [[]for _ in range(N+1)]
visited = [0]*(N+1)
cnt = 1
for i in range(M):
a,b = map(int, input().split())
graph[a].append(b)
graph[b].append(a)
for i in range(1, N + 1):
graph[i].sort()
def bfs(graph, start, visited):
# ์์ ๋
ธ๋
global cnt
queue = deque([start])
visited[start]= cnt
while queue:
v = queue.popleft()
for i in graph[v]:
if visited[i] == 0:
cnt = cnt +1
visited[i] = cnt
queue.append(i)
bfs(graph,start,visited)
for i in range(1,N+1):
print(visited[i])
'์๊ณ ๋ฆฌ์ฆ > ๋ฐฑ์ค | ํ๋ก๊ทธ๋๋จธ์ค | ์ํํฐ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 1874๋ฒ: ์คํ ์์ด (0) | 2024.11.11 |
---|---|
[๋ฐฑ์ค] 1436๋ฒ: ์ํ๊ฐ๋ ์ (1) | 2024.11.09 |
[ํ์ด์ฌ] 24479๋ฒ: ๊น์ด ์ฐ์ ํ์1 / ๊น์ด์ฐ์ ํ์ DFS (0) | 2024.10.31 |
[ํ์ด์ฌ] 11561๋ฒ: ์ง๊ฒ๋ค๋ฆฌ / ์ด๋ถํ์ (1) | 2024.10.30 |
[ํ์ด์ฌ] 1072๋ฒ: ๊ฒ์ / ๋ธ๋ฃจํธํฌ์ค ์ด๋ถํ์ (0) | 2024.10.28 |