์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
31 |
- ์ค๋ฒ2
- Import
- ๋จ๋ฐฉํฅํ์
- ๊น์ด์ฐ์ ํ์
- screen program
- ๋ชจ๋ํ
- ์๋ฐฉํฅํ์
- ์๊ณ ๋ฆฌ์ฆ
- ์ด๋ถํ์
- ์คํธ๋ญ์ฒ
- modify
- SAP
- abap dictionary
- ๋๋น์ฐ์ ํ์
- ๋ฐฑ์ค
- Export
- Function Module
- tasknumber
- PRD
- ABAP
- dev
- subscreen
- select
- call function
- ์ค๋ฒ3
- qas
- structure
- screen
- Internal Table
- t์ฝ๋
- Today
- Total
CS Student’s SAP&Tech Journey๐ซ
[ํ์ด์ฌ] 24479๋ฒ: ๊น์ด ์ฐ์ ํ์1 / ๊น์ด์ฐ์ ํ์ DFS ๋ณธ๋ฌธ
[ํ์ด์ฌ] 24479๋ฒ: ๊น์ด ์ฐ์ ํ์1 / ๊น์ด์ฐ์ ํ์ DFS
์ธํฌ๋งํฑ 2024. 10. 31. 18:151. ๋ฐฑ์ค 24479๋ฒ ์๊ณ ๋ฆฌ์ฆ ์์ - ๊น์ด ์ฐ์ ํ์ 1
[๋ฐฑ์ค] 24479๋ฒ : ์๊ณ ๋ฆฌ์ฆ ์์ - ๊น์ด ์ฐ์ ํ์
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. ๋ฌธ์ ์ ๊ทผ
๊น์ด์ฐ์ ํ์ DFS๋ฅผ ํ์ตํ๋ ๋ฌธ์ ์ด๋ค.
์ฌ๊ทํจ์๋ฅผ ์ด์ฉํด DFSํจ์๋ฅผ ์ ์ํ๊ณ ํธ์ถํ๋ ๋ฐฉ๋ฒ์ผ๋ก ํด๊ฒฐํด๊ฐ๋ค.
์๊ฐ์ด๊ณผ๋ฌธ์
input = sys.stdin.readline
์ฌ๊ทํจ์ ๋ฐํ์์๋ฌ
Python์ ๊ธฐ๋ณธ ์ฌ๊ท ์ ํ์ ์ฝ 1000 ์ ๋๋ก, sys.setrecursionlimit์ ์ค์ ํ์ง ์์ผ๋ฉด ํฐ ์ ๋ ฅ์ ์ฒ๋ฆฌํ๋ ๊ณผ์ ์์ ์ฌ๊ท ํธ์ถ์ด ์ ํ์ ์ด๊ณผํ์ฌ ๋ฐํ์ ์๋ฌ๊ฐ ๋ฐ์ํ ์ ์๋ค.
import sys
sys.setrecursionlimit(150000)
DFS ํจ์
1. ๊ฐ ๋ ธ๋๋ฅผ ์ฒ์์ 0์ผ๋ก ์ด๊ธฐํ ํ visited์ ์ ์ฅํ๊ณ ์ฒซ๋ฒ์งธ ๋ ธ๋๋ cnt = 1 ๊ฐ์ ์ค๋ค.
์์ง ๋ฐฉ๋ฌธ์ํ ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํ๊ฒ ๋๋ฉด(visited๊ฐ 0์ธ๊ฒ) cnt๋ฅผ ๋๋ ค ๊ทธ ๊ฐ์ ์ ์ฅํ๋ค.
2. ์ธ์ ์ ์ ์ ์ค๋ฆ์ฐจ์์ผ๋ก ๋ฐฉ๋ฌธํด์ผ ํ๋ฏ๋ก ์ ๋ ฌํด์ค๋ค.
import sys
sys.setrecursionlimit(150000)
input = sys.stdin.readline
N,M,v = map(int, input().split())
visited = [0]*(N+1)
graph = [[] for _ in range(N + 1)]
cnt = 1
for i in range(M):
a,b = map(int,input().split())
graph[a].append(b)
graph[b].append(a)
def dfs(v):
global cnt
visited[v]= cnt
graph[v].sort()
for i in graph[v]:
if visited[i]==0:
cnt = cnt+1
dfs(i)
dfs(v)
for i in range(1,N+1):
print(visited[i])
'์๊ณ ๋ฆฌ์ฆ > ๋ฐฑ์ค | ํ๋ก๊ทธ๋๋จธ์ค | ์ํํฐ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 1874๋ฒ: ์คํ ์์ด (0) | 2024.11.11 |
---|---|
[๋ฐฑ์ค] 1436๋ฒ: ์ํ๊ฐ๋ ์ (1) | 2024.11.09 |
[๋ฐฑ์ค] 24444๋ฒ: ๋๋น ์ฐ์ ํ์1 / ๋๋น์ฐ์ ํ์ BFS (0) | 2024.11.05 |
[ํ์ด์ฌ] 11561๋ฒ: ์ง๊ฒ๋ค๋ฆฌ / ์ด๋ถํ์ (1) | 2024.10.30 |
[ํ์ด์ฌ] 1072๋ฒ: ๊ฒ์ / ๋ธ๋ฃจํธํฌ์ค ์ด๋ถํ์ (0) | 2024.10.28 |