혼합물의 레시피 트리가 주어질 때, 준비 순서를 정해 필요한 그릇의 최소 개수를 구한다.
보통6트리DFS그리디아직 제출이 없습니다시간 제한5초메모리 제한512 MB레시피를 따라 점심을 만들려고 한다.
레시피는 볼 하나에 재료를 섞어 만드는 혼합물이다. 각 재료는 둘 중 하나다.
혼합물을 만들려면 재료를 모두 준비한 다음 빈 볼을 하나 가져와 그 안에서 재료를 섞는다. 이미 혼합물이 담긴 볼에 재료를 더 넣어서 새 혼합물을 만들 수는 없다.
예를 들어 혼합물 CAKEMIX와 기본 재료 lies로 혼합물 CAKE를 만든다면, 먼저 CAKEMIX를 자기 볼에서 만들고, 두 번째 볼에 CAKEMIX와 lies를 넣어 CAKE를 만들어야 한다.
어떤 혼합물을 재료로 써서 그 혼합물이 담겨 있던 볼을 비우면, 그 볼을 다른 혼합물에 다시 쓸 수 있다. 그래서 레시피를 완성하는 데 드는 볼의 개수는 혼합물을 만드는 순서에 따라 달라진다.
필요한 볼의 최소 개수를 구하라.
첫째 줄에 테스트 케이스의 개수 C가 주어진다.
각 테스트 케이스는 이렇게 주어진다.
한 줄의 토큰은 공백 하나로 구분된다.
각 테스트 케이스에서 첫 번째로 주어지는 혼합물이 만들려는 레시피다.
혼합물의 이름은 길이가 1 이상 20 이하인 대문자 문자열이고, 기본 재료의 이름은 길이가 1 이상 20 이하인 소문자 문자열이다.
레시피를 뺀 모든 혼합물은 정확히 하나의 다른 혼합물에 재료로 쓰이며, 레시피는 어떤 혼합물에도 쓰이지 않는다. 한 혼합물의 재료 목록에 같은 재료가 두 번 나오는 일은 없다. 어떤 혼합물도 직접 또는 간접으로 자기 자신을 재료로 요구하지 않는다.
제한
각 테스트 케이스마다 Case #X: Y 형식으로 한 줄씩 출력한다. X는 1부터 시작하는 테스트 케이스 번호이고, Y는 필요한 믹싱 볼의 최소 개수다.
예제의 첫 번째 테스트 케이스에서 SOUP는 이런 순서로 만든다.
두 번째 테스트 케이스에서는 FLAVOR와 FRUIT 중 무엇을 먼저 만들고 나서 milk, icecream과 섞을지 고를 수 있다.
FRUIT를 먼저 만들면 볼 네 개를 쓴다.
FRUIT를 FLAVOR보다 나중에 만들면 볼 세 개로 끝난다.