고통의 조직도
시간 제한1초메모리 제한256 MB
레이블이 일치하고 조상 관계가 양쪽으로 보존되도록 각 패턴 트리가 조직 트리에 임베딩되는지 판정합니다.
문제
한 컨설팅 회사는 직원을 조직도 트리로 관리한다. 직원 한 명이 노드 하나이고, 대표가 루트이며, 각 노드에는 직함이 라벨로 붙는다.
어느 경영 잡지가 위험하다고 분류한 패턴 목록을 실었다. 예를 들어 어떤 엔지니어의 윗선 어딘가에 경제학자가 있는 구조가 그런 패턴이다. 패턴도 직함을 라벨로 갖는 루트 있는 트리다.
패턴 가 조직도 에 나타난다는 것은, 의 노드에서 의 노드로 가는 함수 가 다음을 모두 만족한다는 뜻이다.
- 는 단사다. 즉 이면 이다.
- 는 라벨을 보존한다. 즉 모든 에 대해 의 라벨과 의 라벨이 같다.
- 는 조상 관계를 양방향으로 보존한다. 즉 가 의 진조상인 것과 가 의 진조상인 것이 서로 필요충분조건이다.
패턴의 간선 하나는 조직도에서 긴 경로로 늘어나도 된다. 반대로 패턴에서 조상 관계가 없는 두 노드는 조직도에서도 서로 조상이 아닌 두 노드로 가야 한다.
조직도와 패턴 목록이 주어진다. 각 패턴이 조직도에 나타나는지 판정하라.
입력
첫 줄에 조직도 가 공백 없는 문자열 하나로 주어진다. 노드 개수 은 이다. 노드는 자기 라벨을 쓰고, 자식이 있으면 그 뒤 괄호 안에 자식 목록을 쉼표로 구분해 쓴다. 라벨은 길이가 1 이상 10 이하인 소문자 문자열이다.
둘째 줄에 패턴 개수 가 주어진다. 이다.
이어지는 개의 줄에 패턴 트리가 같은 형식으로 한 줄에 하나씩 주어진다. 각 패턴의 노드 개수 은 이다.
출력
각 패턴마다 한 줄씩 출력한다. 패턴이 조직도에 나타나면 disaster를, 나타나지 않으면 great success를 출력한다.