ํฐ์คํ ๋ฆฌ ๋ทฐ
728x90
๋ฐ์ํ
๋ฌธ์
๋ฌธ์ ํ์ด
์ฃผ์ด์ง ์ ๋ ฅ ๊ฐ N, M์ ๋ฐ๋ผ ๊ฐ์ ์ ๋ณด๋ฅผ ํ ๋๋ก ๊ทธ๋ํ๋ฅผ ์ด๊ธฐํ ํด์ค ํ ๊ฐ ๋ ธ๋๋ง๋ค ์ฐ๊ฒฐ๋ ๋ ธ๋๋ค๋ก ๊ฒฝ๋ก๋ฅผ ํ์ํ๋ฉด ๋๋ค. ์ด๋ ๋ฐฑํธ๋ํน์ด ํ์ํ๋ฏ๋ก `DFS`๋ก ํ์์ ์งํํ์ฌ ์ฐ๊ฒฐ๋ ๋ ธ๋์ ๊ฐ์๊ฐ ํฌ๋ฉด ๊ฐฑ์ ์์ผ์ฃผ๋ฉด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค.
์ฝ๋
from collections import defaultdict
T = int(input())
def dfs(cur_node, cnt):
global answer
if answer < cnt:
answer = cnt
for next_node in graph[cur_node]:
if not visited[next_node]:
visited[next_node] = True
dfs(next_node, cnt + 1)
visited[next_node] = False
for test_case in range(1, T + 1):
answer = 0
n, m = map(int, input().split())
graph = defaultdict(list)
visited = [False] * (n + 1)
for _ in range(m):
node, other_node = map(int, input().split())
# ๊ทธ๋ํ๋ ์๋ฐฉํฅ ์ฑ์ด๋ฏ๋ก 2๋ฐฉํฅ ๋ชจ๋ ์ถ๊ฐ
graph[node].append(other_node)
graph[other_node].append(node)
# ์์ ๋
ธ๋๋ฅผ ๋ค๋ฅด๊ฒ ํ์ฌ DFS๋ก ๋
ธ๋๋ค์ ํ์ํจ
for node in range(1, n + 1):
visited[node] = True
dfs(node, 1)
visited[node] = False
print('#' + str(test_case), answer)
๋ฐฑํธ๋ํน์์๋ ํญ์ ์ฃผ์ํ์ฌ, ํน์ ๊ฐ์ง์์ `visited`๋ฅผ `True`๋ก ํ์๋ค๋ฉด ํธ์ถ ์คํ์์ ๋ณต๊ท ํ์ ๋ค์ `False`๋ก ๋ง๋ค์ด ๋ฐฑํธ๋ํน์ด ๊ฐ๋ฅํ๋๋ก ํ์ฌ์ผ ํ๋ค.
728x90
๋ฐ์ํ
'๐จโ๐ป ์ฝ๋ฉํ ์คํธ > SWEA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
SWEA: 7701 ์ผ๋ผ๋์์ ์ด๋ฆ ์ ๋ ฌ (0) | 2021.04.01 |
---|---|
SWEA: 3074 ์ ๊ตญ์ฌ์ฌ (0) | 2020.10.10 |
SWEA: 2806 N-Queen (0) | 2020.10.07 |
SWEA: 2805 ๋์๋ฌผ ์ํํ๊ธฐ (0) | 2020.10.07 |
SWEA: 1289 ์์ฌ์ ๋ฉ๋ชจ๋ฆฌ ๋ณต๊ตฌํ๊ธฐ (0) | 2020.10.07 |
๋๊ธ
๊ธ ๋ณด๊ดํจ
์ต๊ทผ์ ์ฌ๋ผ์จ ๊ธ
์ต๊ทผ์ ๋ฌ๋ฆฐ ๋๊ธ