현제의 현재이야기
[백준/python] 2606 - 바이러스 본문
| DFS 풀이
bilgisayar = int(input())
n = int(input())
graph = [[] for _ in range(bilgisayar + 1)]
check = [0] * (bilgisayar + 1)
cnt = 0
for _ in range(n):
x, y = map(int, input().split())
graph[x].append(y)
graph[y].append(x)
def dfs(i):
global cnt
check[i] = 1
cnt += 1
for v in graph[i]:
if check[v] == 0:
check[v] = 1
dfs(v)
for i in graph[1]:
if check[i] == 0:
dfs(i)
print(cnt - 1)
| 알고리즘
지극히 평범한 연결요소 개수 문제 bfs로도 풀어봐야겠다. 점점 dfs bfs와 친해지고 있는 너낌
| BFS 풀이
from collections import deque
bilgisayar = int(input())
n = int(input())
graph = [[] for _ in range(bilgisayar + 1)]
check = [0] * (bilgisayar + 1)
cnt = 0
for _ in range(n):
x, y = map(int, input().split())
graph[x].append(y)
graph[y].append(x)
def bfs(i):
global cnt
que = deque(graph[i])
check[i] = 1
while que:
target = que.popleft()
check[target] = 1
for v in graph[target]:
if check[v] != 1:
check[v] = 1
que.append(v)
for i in graph[1]:
if check[i] == 0:
bfs(i)
print(sum(check) - 1)
'algorithm' 카테고리의 다른 글
[백준/python] 5430 - AC (1) | 2022.09.30 |
---|---|
[백준/python] 2164 - 카드2 (0) | 2022.09.29 |
[백준/python] 1331 - 나이트투어 (0) | 2022.09.27 |
[백준/python] 15787 - 기차가 어둠을 헤치고 은하수를 (1) | 2022.09.22 |
[백준/python] 18310 - 안테나 (0) | 2022.09.19 |
Comments