728x90
반응형
https://www.acmicpc.net/problem/2606
2606번: 바이러스
첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어
www.acmicpc.net
정답 code
-dfs 활용
#dfs이용
def dfs(com, x):
global cnt
visited[x] = True
for i in com[x]:
if visited[i] == False:
dfs(com,i)
cnt += 1
return True
n = int(input())
c = int(input())
cnt = 0
com = [[] for _ in range(n+1)]
for _ in range(c):
x, y = map(int,input().split())
com[x].append(y)
com[y].append(x)
visited = [False] * (n+1)
dfs(com,1)
print(cnt)
-dfs 활용
# bfs 이용
from collections import deque
def bfs(com, x):
cnt = 0
queue = deque()
queue.append(x)
while queue:
x = queue.popleft()
visted[x] = True
for i in com[x]:
if visted[i] == False:
queue.append(i)
visted[i] = True
cnt += 1
print(cnt)
n = int(input())
c = int(input())
com = [[] for _ in range(n+1)]
for _ in range(c):
x, y = map(int,input().split())
com[x].append(y)
com[y].append(x)
visted = [False]*(n+1)
bfs(com , 1)
solution
이번 문제는 bfs나 dfs를 이용하여 간편하게 풀 수 있다.
여기서 신경써야 될점은 컴퓨터 1로 부터 탐색을 해나갈때 카운트(cnt)를 해주어 바이러스에 걸리게 되는 컴퓨터를 세어야 한다.
728x90
반응형
'알고리즘 > 백준[baekjoon]' 카테고리의 다른 글
[baekjoon] 백준 7576번 : 토마토 (by python) with 너비 우선 탐색 bfs (0) | 2022.05.30 |
---|---|
[baekjoon] 백준 2630번 : 색종이 만들기 (with python) 재귀 (0) | 2022.05.29 |
[baekjoon] 백준 2579번 : 계단 오르기 (by python) (0) | 2022.05.27 |
[baekjoon] 백준 2178번 : 미로 탐색 (by python 파이썬) with bnf (0) | 2022.05.24 |
[baekjoon]백준 1992번 : 쿼드트리 (by python 파이썬) 분할,재귀 (0) | 2022.05.22 |