BFS
import sys
from collections import deque
input = sys.stdin.readline
N = int(input())
V = int(input())
graph = [[] for i in range(N+1)]
for i in range(V):
a ,b = map(int, input().split())
graph[a].append(b)
graph[b].append(a)
visited = [0] * (N+1)
def bfs(V):
count = 0
queue = deque()
queue.append(V)
visited[V] = 1
while queue:
node = queue.popleft()
for n in graph[node]:
if visited[n] == 0:
queue.append(n)
visited[n] = 1
count += 1
return count
print(bfs(1))
DFS
import sys
sys.setrecursionlimit(10**6)
input = sys.stdin.readline
N = int(input())
V = int(input())
graph = [[] for i in range(N+1)]
for i in range(V):
a ,b = map(int, input().split())
graph[a].append(b)
graph[b].append(a)
visited = [0] * (N+1)
count = 0
def dfs(V):
global count
visited[V] = 1
for n in graph[V]:
if visited[n] == 0:
dfs(n)
count += 1
dfs(1)
print(count)
DFS의 경우에는 count를 global 변수로 선언해야 사용가능하다.
728x90
'파이썬 알고리즘 문제 풀이' 카테고리의 다른 글
[프로그래머스] Lv2. 게임 맵 최단거리 BFS (2) | 2024.02.21 |
---|---|
[백준] 10026번 적록색약 DFS, BFS (0) | 2024.02.21 |
[백준] 1012번 유기농 배추 DFS, BFS (2) | 2024.02.21 |
[백준] 1697번 숨바꼭질 BFS (2) | 2024.02.20 |
[백준] 117번 DFS와 BFS 다시 풀기 (0) | 2024.02.20 |