본문 바로가기

알고리즘/BFS&DFS

백준11724

 

*bfs풀이

from collections import deque

def bfs(graph, start, visited):
    q = deque([start])
    visited[start] = True
    while q:
        v = q.popleft()
        for i in graph[v]:
            if not visited[i]:
                visited[i] = True
                q.append(i)

n, m = map(int, input().split())
graph = [[] for _ in range(n + 1)]
visited = [False] * (n + 1)
cnt = 0
for _ in range(m):
    u, v = map(int, input().split())
    graph[u].append(v)
    graph[v].append(u)

for i in range(1, n + 1):
    if not visited[i]:
        bfs(graph, i, visited)
        cnt += 1

print(cnt)

 

*dfs풀이

import sys
sys.setrecursionlimit(10**6)
input = sys.stdin.readline

def dfs(graph, v, visited):
    visited[v] = True
    for i in graph[v]:
        if not visited[i]:
            dfs(graph, i, visited)


n, m = map(int, input().split())
graph = [[] for _ in range(n + 1)]
for i in range(m):
    u, v = map(int, input().split())
    graph[u].append(v)
    graph[v].append(u)
    
cnt = 0
visited = [False] * (n + 1)
for i in range(1, n+1):
    if not visited[i]:
        dfs(graph, i, visited)
        cnt += 1
print(cnt)
반응형

'알고리즘 > BFS&DFS' 카테고리의 다른 글

백준 24479 시간초과 해결 (DFS)  (0) 2024.01.30
백준 11725 트리의 부모 찾기  (0) 2024.01.28
백준 16953 (bfs)  (0) 2024.01.28
[BFS&DFS기본] 백준1260번 (Python)  (0) 2024.01.22
백준 2644(촌수 계산) -BFS  (0) 2023.08.24