게시물을 작성하면서 복습하는 문제를 선정하는 기준은<solved.ac 티어 실버 2 (Silver 2) 이상>입니다.
※ 본 사진과 해당 게시글 내용의 문제 모두 백준 : 온라인 저지[Baekjoon_OnlineJudge]사이트에서 발췌해왔습니다.
백준 온라인 저지 (Baekjoon Online Judge) :5567 결혼식
메모리 : 33420KB
시간 : 100ms
BFS와 그래프 탐색을 활용해 풀었다.
친구관계가 양방성이기 때문에
친구관계 graph에 양쪽 서로 추가시켜주고
상근이부터 시작하기 때문에
학번 1과 관계 깊이를 큐에 넣고 시작한다.
한 번 초대한 친구를 중복해서 초대하면 안되기 때문에
visited
로 체크를 해주고
친구의 친구를 탐색하기 위해
for을 활용하고
조건 또한
친구의 친구까지만 초대하는 것이기 때문에
관계 깊이(depth
)가 2보다 크게 될 경우엔 스킵하도록 한다.
import sys
input = sys.stdin.readline
N = int(input())
R = int(input())
graph = [[] for _ in range(N+1)]
visited = [0]*(N+1)
for _ in range(R):
a, b = map(int, input().split())
graph[a].append(b)
graph[b].append(a)
from collections import deque
def find_friend() :
q = deque()
q.append([1,0])
visited[1] = 1
cnt = -1
while q:
now, depth = q.popleft()
if depth > 2:
continue
cnt += 1
for f in graph[now] :
if graph[f] and visited[f]==0 :
q.append([f, depth+1])
visited[f] = 1
return cnt
print(find_friend())