https://www.acmicpc.net/problem/2606
2606번: 바이러스
첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어
www.acmicpc.net
문제 설명
해당 문제는 단순히 그래프탐색을 해서 방문 가능한 노드가 총 몇개인지 확인하는 문제였다.
나는 이전에 DFS, BFS문제를 n x n으로 취급해서 문제를 풀었으나 그렇게 하면 시간복잡도가 상당히 높아지기에 인접리스트꼴로 문제를 풀었다.
from collections import deque
def bfs(graph, visit):
q = deque()
q.append(1)
visit[1] = 1
global answer
while q:
v = q.popleft()
for i in iter(graph[v]):
if visit[i] == 0:
q.append(i)
answer = answer+1
visit[i] = 1
return answer
def dfs(v):
visit[v] = 1
global answer
for i in iter(graph[v]):
if visit[i] == 0:
answer = answer + 1
dfs(i)
numberOfComputer = int(input())
numberOfLink = int(input())
answer = 0
graph = [ [] for _ in range(numberOfComputer + 1)]
visit = [0] *(numberOfComputer+1)
for i in range(numberOfLink):
a, b = map(int, input().split())
graph[a].append(b)
graph[b].append(a)
print("======answer======")
dfs(1)
print("dfs : ", answer)
print()
bfs(graph, visit)
print("bfs : ", answer)
'백준' 카테고리의 다른 글
백준 5597 과제 안 내신 분..? (파이썬) (0) | 2023.04.20 |
---|---|
[백준] 2753 윤년 (파이썬) (0) | 2023.04.20 |
[백준] 1260 DFS와 BFS (0) | 2023.03.08 |
백준 17128 소가 정보섬에 올라온 이유(JAVA) (0) | 2022.08.19 |
백준 10703 유성(JAVA) (0) | 2022.08.19 |