https://www.acmicpc.net/problem/5567
BFS를 이용해 탐색하는데, depth 제한이 있음에 주의해야 한다
일단 상근이 학번인 1부터 시작한다
q를 돌면서
현재 탐색 중인 요소 번째에 친구 관계를 분석한다
만약 탐색한 적이 없는 친구면, visited로 바꿔주고,
초대할 친구 목록에 추가해준다
초대할 친구 목록은 set으로 선언했기 때문에 중복되지 않는 요소만 추가된다
추가 탐색은 친구의 친구까지만 가능하기 때문에
현재 탐색 요소가 상근를 기준으로 친구를 탐색할 때만 q에 추가한다
그 외에 q에 추가할 경우, 친구의 친구의 친구를 탐색할 수 있기 때문
탐색을 모두 마친 후 invite의 길이를 출력하면 된다
from collections import deque
n = int(input())
m = int(input())
f = [[] for _ in range(n+1)]
for i in range(m):
a,b = map(int, input().split())
f[a].append(b)
f[b].append(a)
visited=[False]*(n+1)
invite=set()
q = deque([1])
visited[1] = True
while q:
cur = q.popleft()
for friend in f[cur]:
if not visited[friend]:
visited[friend]=True
invite.add(friend)
if cur==1:
q.append(friend)
print(len(invite))
'개발자 강화 > 코딩 테스트' 카테고리의 다른 글
[백준] 9935 문자열 폭발 / 구현 / Python 골4 (1) | 2024.11.26 |
---|---|
[백준] 10026 적록색약 / BFS / Python 골5 (0) | 2024.11.25 |
[백준] 1806 부분합 / 투포인터 / Python 골4 (0) | 2024.11.23 |
[백준] 14719 빗물 / 구현 / Python 골5 (0) | 2024.11.23 |
[백준] 회전초밥 / Python 실1 (0) | 2024.11.22 |