~๋ชฉ์ฐจ~
๋ฌธ์
๋ฌธ์ ํด๊ฒฐ ํฌ์ธํธ
- BFS ๋ฌธ์ ์ธ์ค ์์์ผ๋ DFS๋ก ๋ฐ์ ํ ์ ์๋ ๋ฌธ์
- ๊ฐ์ ์ ์ธ์ ํ๋ ฌ ๋๋ ์ธ์ ๋ฆฌ์คํธ๋ก ์ ์ฅ
- ๋ฐฉ๋ฌธํ ์ ์ ์ ๋ํด ํ์ํด ๋์ ๋ฆฌ์คํธ
- ์ด๋ค ๋ ธ๋๋ถํฐ ์์ํด์ผ์ง ๊ฐ์ฅ ๊ธธ์ง ์ ์ ์์ผ๋ฏ๋ก ๋ชจ๋ ์ ์ ์ ๋ํด ์์๋ ธ๋๋ก ํ์
- ๋ถ๋ชจ ๋ ธ๋๋ก ์ฌ๋ผ์ฌ ๋ ๋ฐฉ๋ฌธํ์ ํด์
- ๊ฐ์ฅ ๊น์ด DFS๋ฅผ ๋ค์ด๊ฐ ๊ฒฝ์ฐ๊ฐ ์ ๋ต
์์ฑ ์ฝ๋
# DFS ํ์ด
def dfs(vert, depth):
global result
if depth > result: result = depth # ์ง๊ธ๊น์ง ๊ฒฝ๋ก๋ณด๋ค ๊ธธ๋ค๋ฉด
for v in vertexes[vert]: # ํด๋น ์ ์ ์ ๋ํด ์ฐ๊ฒฐ๋ ๋ชจ๋ ์ ์ ํ์
if not visited[v]: # ์์ง ๋ฐฉ๋ฌธ๋์ง ์์๋ค๋ฉด
visited[vert] = True # ๋ฐฉ๋ฌธ ํ์
dfs(v, depth+1)
visited[vert] = False # ๋ฐฉ๋ฌธ ํด์
for test in range(1, int(input())+1):
N, M = list(map(int, input().split()))
vertexes = [[] for _ in range(N+1)]
result = 0
for i in range(M): # ๋ชจ๋ ๊ฐ์ ์ ์ธ์ ๋ฆฌ์คํธํ(๋ฌด๋ฐฉํฅ์ด๋ฏ๋ก ๋ ์ ์ ๊ฐ๊ฐ ์ฐ๊ฒฐ)
start, end = list(map(int, input().split()))
vertexes[start].append(end)
vertexes[end].append(start)
visited = [False]*(N+1) # ๋ฐฉ๋ฌธํ ์ ์ ํ์
for vertex in range(1, N+1): # ์ฒ์ ๋ฐฉ๋ฌธํ ์ ์ ์ ํ
visited[vertex] = True
dfs(vertex, 1)
print("#{} {}".format(test, result))
๋์์ด ๋์ จ๋ค๋ฉด ์ข์์ ๋๋ฌ์ฃผ์ธ์๐
REFERENCE
https://wizdom.tistory.com/238
'๐๋ฌธ์ ํ์ด > ๐งฉSWExpertAcademy' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SWEA] ํ์ด์ฌ 1860. ์ง๊ธฐ์ ์ต๊ณ ๊ธ ๋ถ์ด๋นต (0) | 2023.04.30 |
---|---|
[SWEA] ํ์ด์ฌ 1216. ํ๋ฌธ2 | ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ (0) | 2023.04.26 |
[SWEA] ํ์ด์ฌ 220. Magnetic | ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ (0) | 2023.04.25 |
[SWEA] ํ์ด์ฌ 2817. ๋ถ๋ถ ์์ด์ ํฉ | BFS (0) | 2023.04.24 |
[SWEA] ํ์ด์ฌ 2806. N-Queen | ๋ฐฑํธ๋ํน(Backtracking) (0) | 2023.04.21 |