2606

Leeys·2022년 1월 11일

백준

목록 보기
7/14

풀이1

연결된 노드를 모두 방문하면 되므로 bfs, dfs 둘 다 상관없을 것 같다.

from collections import deque

n = int(input())
m = int(input())

net = []
for i in range(m):
  first, second = map(int, input().split())
  net.append([first, second])


def bfs(x):
  res = 0
  queue = deque()
  queue.append(x)

  visit = []
  visit.append(x)

  while queue:
    x = queue.popleft()

    for i in range(m):
      if net[i][0] == x:
        if net[i][1] in visit:
          continue
        res += 1
        visit.append(net[i][1])
        queue.append(net[i][1])
    // 네트워크 배열의 각 인자에 첫번째 값이 x와 같으면 바이러스 걸린 갯수 추가
    // 그 쌍은 방문 했음
    
  
  return res

print(bfs(1))

오류
이어져 있는 쌍에서 첫번째 컴퓨터만 가지고 찾다보니 이어져 있어도 두번째 컴퓨터를 확인 안하니 누락됨

풀이2

from collections import deque

n = int(input())
m = int(input())

net = []
for i in range(m):
  first, second = map(int, input().split())
  net.append([first, second])


def bfs(x):
  res = 0
  queue = deque()
  queue.append(x)

  visit = []
  visit.append(x)

  while queue:
    x = queue.popleft()

    for i in range(m):
      if net[i][0] == x:
        if net[i][1] not in visit:
          res += 1
          visit.append(net[i][1])
          queue.append(net[i][1])
      elif net[i][1] == x:
        if net[i][0] not in visit:
          res += 1
          visit.append(net[i][0])
          queue.append(net[i][0]) // 쌍의 두번째 인자도 방문

  return res

print(bfs(1))
    
profile
공부 리마인드

0개의 댓글