[백준] 3085 사탕 게임

백준 3085 사탕 게임

문제

상근이는 자신의 결혼식에 학교 동기 중 자신의 친구와 친구의 친구를 초대하기로 했다.

상근이의 동기는 모두 N명이고, 이 학생들의 학번은 모두 1부터 N까지이다. 상근이의 학번은 1이다.

상근이는 동기들의 친구 관계를 모두 조사한 리스트를 가지고 있다.

이 리스트를 바탕으로 결혼식에 초대할 사람의 수를 구하는 프로그램을 작성하시오.

입력

  • 첫째 줄: 상근이의 동기의 수 N
  • 두번째 줄: 리스트의 길이 m
  • 세번째 줄 ~: 친구 관계 ai bi

출력

상근이가 결혼식에 초대하는 동기의 수

해결 방식

bfs 알고리즘 이용

  • visited에 몇 번을 거친 친구인지 저장

코드

from collections import deque
import sys
input = sys.stdin.readline

n = int(input())
m = int(input())
graph = [ [] for _ in range(n+1)]
visited = [0 for _ in range(n+1)]

for i in range(m):
    a,b = map(int,input().split())
    graph[a].append(b)
    graph[b].append(a)

def bfs(x):
    q = deque()
    visited[x] = 1
    q.append(x)
    while q:
        a = q.popleft()
        for i in graph[a]:
            if visited[i] == 0:
                q.append(i)
                visited[i] = visited[a] + 1

bfs(1)
result = 0
for i in range(2,n+1):
    if visited[i] < 4 and visited[i] != 0:
        result += 1
print(result)

homebdy
homebdy 개발에 이제 막 발 담근 사람. 개발에 이제 막 발 담근 사람. 개발에 이제 막 발 담근 사람. 개발에 이제 막 발 담근 사람.
comments powered by Disqus