각 상속 관계도에서 두 클래스를 잇는 서로 다른 상속 경로가 두 개 이상 있는지 판정합니다.
보통4그래프DFS면접 대비아직 제출이 없습니다시간 제한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이다.