개발자 톡
연습문제 톡
나무 막대
고수분들 부탁드립니다. 더 이상 시간이 줄지 않네요 ㅠㅠ
- 등록일
- 2024-10-01 15:18:55
- 조회수
- 86
- 작성자
- dudgns0908
import sys N, L, R = list(map(int, input().split())) edges = [list(map(int, input().split())) for _ in range(N-1)] branch_map = {} for u, v, num in edges: if branch_map.get(u) is None: branch_map[u] = [] branch_map[u].append((v, num)) def find_stick(node, unique_branch): count = 0 current_num_stick = len(unique_branch) if L <= current_num_stick <= R: count += 1 elif current_num_stick > R: return count if branch_map.get(node) is not None: for child_node, num in branch_map[node]: if num in unique_branch: count += find_stick(child_node, unique_branch) else: unique_branch.add(num) count += find_stick(child_node, unique_branch) unique_branch.pop() return count def main(): count = 0 for root_node in branch_map.keys(): count += find_stick(root_node, unique_branch=set()) print(count) if __name__ == '__main__': main()
#나무_막대