[백준] 2617 : 구슬 찾기
문제
https://www.acmicpc.net/problem/2617
풀이
# visited 처리를 해줘야 파고 들어서 인접노드로 들어갔을 때 똑같은 수가 있는 경우
# 이미 visited True 상태이기 때문에 count를 하나 더 올리지 않을 수가 있다.
import sys
input = sys.stdin.readline
N, M = map(int, input().split())
light_g = [[] for _ in range(N+1)]
heavy_g = [[] for _ in range(N+1)]
visited = [False] * (N+1)
for i in range(M):
a, b = map(int, input().split())
light_g[a].append(b)
heavy_g[b].append(a)
count = 0
def light(i):
global count
visited[i] = True
for j in light_g[i]: # 현재 i보다 가벼운 것들
if not visited[j]:
count += 1 # 인접노드를 돌 때마다 count를 1 올려줌
visited[j] = True
light(j)
return count
def heavy(i):
global count
visited[i] = True
for j in heavy_g[i]:
if not visited[j]:
count += 1
visited[j] = True
heavy(j)
return count
result = 0
for i in range(1, N+1):
tmp = light(i)
visited = [False] * (N+1)
if tmp >= (N+1)//2:
result += 1
count = 0
for i in range(1, N+1):
tmp = heavy(i)
visited = [False] * (N+1)
if tmp >= (N+1)//2:
result += 1
count = 0
print(result)
Author And Source
이 문제에 관하여([백준] 2617 : 구슬 찾기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@letsbebrave/백준-2617-구슬-찾기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)