from collections import deque import sys input = sys.stdin.readline N, M = map(int,input().split()) recipe_dict = {} next_node_list = [set() for _ in range(N+1)] for _ in range(M): input_list = list(map(int,input().split())) recipe = input_list[1:-1] liquid_number = input_list[-1] recipe.sort() if recipe_dict.get(liquid_number): recipe_dict[liquid_number].append([set(recipe),input_list[0]]) else: recipe_dict[liquid_number] = [[set(recipe),input_list[0]]] for num in recipe: next_node_list[num].add(liquid_number) L = int(input()) own_liquid = list(map(int,input().split())) possible_list = [False]*(N+1) result = set() for num in own_liquid: possible_list[num] = True result.add(num) queue = deque(own_liquid) while queue: cur_num = queue.popleft() next_nodes = next_node_list[cur_num] for next_node in next_nodes: if possible_list[next_node]: continue for ind in range(len(recipe_dict[next_node])): recipe = recipe_dict[next_node][ind][0] cnt = recipe_dict[next_node][ind][1] if cur_num in recipe: cnt -= 1 recipe.remove(cur_num) recipe_dict[next_node][ind][0] = recipe recipe_dict[next_node][ind][1] = cnt if cnt == 0: possible_list[next_node] = True queue.append(next_node) result.add(next_node) print(len(result)) result = sorted(list(result)) print(*result)
import sys input = sys.stdin.readline N,M = map(int,input().split()) recipe_remain_cnt = [] liquid_number = [] next_recipe_array = [[] for _ in range(N+1)] for i in range(M): k,*recipe,r = map(int,input().split()) recipe_remain_cnt.append(k) liquid_number.append(r) for num in recipe: next_recipe_array[num].append(i) L = int(input()) own_liquid = list(map(int,input().split())) result = set(own_liquid) while own_liquid: cur_num = own_liquid.pop() for recipe_idx in next_recipe_array[cur_num]: recipe_remain_cnt[recipe_idx] -= 1 if recipe_remain_cnt[recipe_idx] == 0 and liquid_number[recipe_idx] not in result: own_liquid.append(liquid_number[recipe_idx]) result.add(liquid_number[recipe_idx]) print(len(result)) result = sorted(list(result)) print(*result)
'알고리즘 > 백준_복기_미완료' 카테고리의 다른 글
[BOJ/백준] 20300 서강근육맨 (0) | 2021.05.07 |
---|---|
[BOJ/백준] 20181 꿈틀꿈틀 호석 애벌레 - 효율성 (0) | 2021.05.07 |
[BOJ/백준] 20114 미아노트 (0) | 2021.05.07 |
[BOJ/백준] 20061 모노미노도미노 2 (0) | 2021.05.07 |
[BOJ/백준] 20058 마법사 상어와 파이어스톰 (0) | 2021.05.07 |