Mhocskian 언어
시간 제한2초메모리 제한512 MB
춤스키 정규형 문맥 자유 문법과 단어 목록이 주어질 때, 시작 변수에서 각 단어가 유도되는지 판정한다.
문제
언어학자들이 Mhocsky 섬 원주민의 언어인 Mhocskian을 연구하고 있다. 이들은 원주민이 단어를 만드는 방법에 대한 설명과 단어 목록을 발견했고, 그 목록의 단어들 중 어떤 것이 올바른 Mhocskian 단어인지 알고 싶어 한다.
Mhocskian의 단어는 두 종류의 기호로 만들어진다.
- 변수(variable)는 단어를 만드는 과정에서만 사용되는 대문자이다.
- 종단 기호(terminal)는 완성된 단어에 실제로 나타나는 소문자이다.
규칙에는 두 종류가 있다.
- 는 변수 를 두 변수 로 (그 순서대로) 바꾼다.
- 는 변수 를 종단 기호 로 바꾼다.
변수 중 하나는 시작 변수이다. 소문자로 이루어진 단어 는, 시작 변수에서 출발하여 규칙들을 차례로 적용해 정확히 를 만들어 낼 수 있으면 올바른 Mhocskian 단어이다. 예를 들어 시작 변수가 이고 규칙이 , , 라면, 를 적용한 뒤 와 를 적용하여 단어 를 만들 수 있으므로 는 올바른 단어이다.
규칙과 단어 목록이 주어질 때, 각 단어가 올바른 Mhocskian 단어인지 판별하여라.
입력
- 첫째 줄에 두 정수 와 가 주어진다. 각각 변수의 개수와 종단 기호의 개수이다.
- 둘째 줄에 공백으로 구분된 개의 대문자, 즉 변수들이 주어진다. 그중 첫 번째가 시작 변수이다.
- 셋째 줄에 공백으로 구분된 개의 소문자, 즉 종단 기호들이 주어진다.
- 넷째 줄에 정수 이 주어진다. 이어지는 개의 줄은 각각
V t형태이며 규칙 를 나타낸다. - 다음 줄에 정수 가 주어진다. 이어지는 개의 줄은 각각
V V1 V2형태이며 규칙 를 나타낸다. - 다음 줄에 정수 가 주어진다. 이어지는 개의 줄에는 각각 소문자로만 이루어진 단어가 하나씩 주어진다.
출력
개의 줄을 출력한다. 번째 줄에는 번째 단어가 올바른 Mhocskian 단어이면 1 을, 그렇지 않으면 0 을 출력한다.
제한
- 목록의 각 단어의 길이는 이상 이하이다.