각 상속 DAG에 서로 다른 상속 경로가 두 개 이상 존재하는 클래스 쌍이 있는지 판정합니다.
보통5그래프위상 정렬동적 계획법면접 대비아직 제출이 없습니다시간 제한5초메모리 제한512 MB클래스 다이어그램을 점검해 다이아몬드 상속이 있는지 판정한다. 아래 그림은 클래스 A, B, C, D 네 개로 이루어진 다이어그램이다. X에서 Y로 향하는 화살표는 클래스 X가 클래스 Y를 상속한다는 뜻이다.

이 다이어그램에서 D는 B와 C를 모두 상속하고, B는 A를 상속하며, C도 A를 상속한다.
클래스 X에서 클래스 Y로 가는 상속 경로는 X,C1,C2,…,Cn,Y 형태로 클래스를 나열한 것이다. 여기서 X는 C1을 상속하고, 1≤i≤n−1인 모든 i에 대해 Ci는 Ci+1을 상속하며, Cn은 Y를 상속한다. n=0인 경우도 포함한다. 즉 X가 Y를 직접 상속하면 나열 X,Y 자체가 상속 경로 하나다. 위 예시에서 D에서 A로 가는 상속 경로는 D,B,A와 D,C,A 두 개다.
어떤 클래스 쌍 X, Y에 대해 X에서 Y로 가는 서로 다른 상속 경로가 두 개 이상 있으면 그 클래스 다이어그램에 다이아몬드 상속이 있다고 한다. 위 다이어그램이 그 전형적인 예다. 주어진 클래스 다이어그램에 다이아몬드 상속이 있는지 판정하라.
첫 줄에 테스트 케이스의 수 T가 주어진다. 이어서 T개의 테스트 케이스가 주어지고, 각 케이스는 클래스 다이어그램 하나를 나타낸다.
각 테스트 케이스의 첫 줄에는 그 다이어그램의 클래스 수 N이 주어진다. 클래스는 1번부터 N번까지 번호가 붙는다. 다음 N개의 줄 가운데 i번째 줄은 클래스 i가 상속하는 클래스의 수 Mi로 시작하고, 그 뒤에 1 이상 N 이하의 서로 다른 정수 Mi개가 이어진다. 이 정수는 클래스 i가 상속하는 클래스의 번호다.
입력은 다음을 만족한다.
각 다이어그램마다 한 줄에 Case #x: y를 출력한다. x는 1부터 시작하는 테스트 케이스 번호이고, y는 그 다이어그램에 다이아몬드 상속이 있으면 Yes, 없으면 No다.