https://www.acmicpc.net/problem/2606
2606번: 바이러스
첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어
www.acmicpc.net
from collections import deque
n = int(input())
m = int(input())
graph = [[0]*(n+1) for i in range(n+1)]
visit = [0]*(n+1)
for i in range(m):
line = list(map(int,input().split()))
graph[line[1]][line[0]] =1
graph[line[0]][line[1]] =1
def bfs(start,graph,visit):
visit[start] = 1
com=deque()
com.append(start)
cnt =0
while com:
v=com.popleft()
for i in range(len(graph[v])):
if visit[i] != 1 and graph[v][i] ==1 :
com.append(i)
visit[i] = 1
cnt += 1
return cnt
print(bfs(1,graph,visit))
bfs 로 풀었는데 dfs 로 풀어도 될거 같은 느낌...?
https://jiwon-coding.tistory.com/93
[백준] 2606번 바이러스 / 파이썬(python)
# 문제 링크 https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트
jiwon-coding.tistory.com
dfs 로 풀어도됨
n = int(input())
m = int(input())
graph = [[]*n for _ in range(n+1)]
for _ in range(m):
a,b = map(int,input().split())
graph[a].append(b)
graph[b].append(a)
cnt = 0
visited = [0]*(n+1)
def dfs(start):
global cnt
visited[start] = 1
for i in graph[start]:
if visited[i]==0:
dfs(i)
cnt +=1
dfs(1)
print(cnt)
그래프 만드는 방식도 고려해도 될거 같다.
반응형
'알고리즘 공부 > BFS & DFS' 카테고리의 다른 글
[백준] 1012번 유기농 배추 - 파이썬 (0) | 2021.08.18 |
---|---|
[백준] 2606번 단지번호붙이기 - 파이썬 (0) | 2021.08.17 |
[백준] 1260번 DFS와 BFS- 파이썬 (0) | 2021.08.17 |
BFS "너비 우선 탐색" 알고리즘 (0) | 2021.03.31 |
DFS 깊이 우선 탐색 알고리즘 (0) | 2021.03.31 |