작은 지식주머니
백준 파이썬 2606 바이러스 본문
백준 링크:https://www.acmicpc.net/problem/2606
2606번: 바이러스
첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어
www.acmicpc.net
dfs로 풀어도 되고 bfs로 풀어도 되는 문제이다.
1로 시작하는 트리가 몇개인지 파악하는 문제
dfs의 경우
n=int(input())
nums=int(input())
matrix=[[0]*(n+1) for _ in range(n+1)]
for i in range(nums):
a,b = map(int,input().split())
matrix[a][b] = 1
matrix[b][a] = 1
def dfs(start,visited):
visited += [start]
for i in range(n+1):
if matrix[start][i] == 1 and i not in visited:
dfs(i,visited)
return visited
print(len(dfs(1,[]))-1)
bfs의 경우
from collections import deque
n=int(input())
nums=int(input())
matrix=[[0]*(n+1) for _ in range(n+1)]
for i in range(nums):
a,b = map(int,input().split())
matrix[a][b] = 1
matrix[b][a] = 1
queue = deque([])
queue.append(1)
visited=[0]*(n+1)
while queue:
x = queue.popleft()
visited[x] = 1
for i in range(1,n+1):
if matrix[x][i] == 1 and visited[i] == 0:
queue.append(i)
print(visited.count(1)-1)
'백준 python 기록' 카테고리의 다른 글
백준 1916 파이썬 최소비용 구하기 (0) | 2021.10.26 |
---|---|
백준 17219 파이썬 비밀번호 찾기 (0) | 2021.10.25 |
백준 파이썬 1260 DFS와 BFS (0) | 2021.10.24 |
백준 14889 파이썬 스타트와 링크 (0) | 2021.10.22 |
백준 파이썬 2529 부등호 (0) | 2021.10.18 |
Comments