문제
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
문제 풀이
- 노드 수 만큼 dfs탐색을 진행하여, 재귀를 진행한 횟수를 세면 깊이를 알 수 있다.
- 출발 노드에서 모든 노드로 각각 탐색을 진행하고, 탐색 중 깊이가 이전 깊이보다 깊을 때 마다, max_val의 값을 갱신한다.
- 재귀를 마친 후, 다시 탐색을 진행해야 하므로 방문 리스트의 값을 다시 해제 한 후, 모든 탐색을 마쳤다면 max_val의 값을 리턴 후, 형식에 맞게 출력한다.
코드
def dfs(now, cnt):
global max_val
if max_val < cnt:
max_val = cnt
visited[now] = True
for i in graph[now]:
if not visited[i]:
dfs(i,cnt+1)
# 방문배열 해제해주기
visited[now] = False
t = int(input())
for tc in range(t):
n,m = map(int,input().split())
graph = [[] for _ in range(n + 1)]
visited = [False] * (n + 1)
for _ in range(m):
x,y = map(int,input().split())
graph[x].append(y)
graph[y].append(x)
max_val = 0
for i in range(n + 1):
dfs(i,1)
print(f'#{tc + 1}',max_val)
'Algorithm > BFS&DFS' 카테고리의 다른 글
| [Java] 백준 4179번 불! (1) | 2023.11.01 |
|---|---|
| [Python] SWEA 2817번 부분 수열의 합 (0) | 2023.05.15 |
| [Python] SWEA 5215번 햄버거 다이어트 (1) | 2023.05.13 |
| [Python] 백준 17086번 아기 상어2 (0) | 2023.04.08 |
| [Python] 백준 18405번 경쟁적 전염 (0) | 2023.04.08 |