프로그램 명: coci_css
제한시간: 5 초

HTML 문서는 계층 구조를 가지고 있다. 이는 이름을 갖는 각 원소가 다른 원소들을 포함할 수 있다는 것을 의미한다. div 명령어만 들어있는 HTML 문서를 생각해보자. 이런 문서는 아래와 같은 형태로 구성되어 있다.

<div id='name' class='class1 class2 ... classK'> // 원소의 시작
... // 원소의 내용
</div> // 원소의 끝

즉, 각각의 단일 원소는 시작 줄과 끝줄이 있고, 그 두 줄 사이에 빈 줄이 있거나 다른 원소들이 있을 수 있으며, 문서는 이런 원소들을 여러 개 포함하고 있다.

각 원소들의 이름은 알파벳 소문자로 이루어진 문자열이며, 서로 다르다. 이름이 E인 원소(원소 E)가 이름이 F인 원소(원소 F) 안에 들어있을 경우, ‘E가 F 안에 포함되어 있다’ 혹은 ‘F가 E를 포함한다’고 하자. 또, E가 F 안에 포함되어 있으면서, E를 포함하면서 F 안에 포함되어 있는 다른 원소 G가 존재하지 않는 경우, ‘F는 E의 부모 원소’라고 하자.

CSS는 스타일시트 언어로써 웹브라우저에서 HTML 문서의 구성 방식을 표현할 때 쓰인다. 이 언어의 주요 기능으로는 선택자(selector)와 분류자(classifier)가 있다.

분류자는 점을 이용해서 한 개 이상의 클래스를 나타내는데, 클래스는 알파벳 소문자로 이루어진 문자열이다. 예를 들어 ".banana.apple", ".banana", ".apple.banana.mango" 등이 모두 분류자이다. 각 분류자는 각각 2, 1, 3개의 클래스를 포함하고 있다. HTML 문서의 한 원소가 분류자를 포함한다는 것은 분류자에 속한 클래스들이 전부 그 원소에 나열되어 있다는 것을 의미한다.

선택자는 한 개 이상의 분류자들과 '>' 연산으로 이루어져 있다.

당신은 N줄의 HTML 문서와 M개의 선택자를 갖고 있다. 당신은 각 선택자가 HTML 문서의 무슨 원소에 포함되어 있는지 구하는 프로그램을 작성해야 한다.

입력 형식

원소의 이름과 클래스의 이름의 길이는 20을 넘지 않는다. 각 줄의 길이는 5,000을 넘지 않으며, 입력 데이터의 크기는 5MB를 넘지 않는다.

출력 형식

각 선택자마다, 한 줄에 하나씩 그 선택자를 포함하는 원소의 수와 이름을 공백을 사이에 두고 출력한다. 원소의 이름은 문서에서 나타난 순서대로 출력한다.
Popular HTML documents have a hierarchical structure. This means they consist of so-called elements that have a name and certain attributes and can contain other elements. In this task we consider documents that consist only of nested div elements. Speci?cally, each document consists of lines of the following form:

< div id=’name’ class=’class1 class2 . . . classK’> element beginning
... element content
</div> element end

Thus, a single element consists of a line that detones its beginning, a line that denotes its end, and in between these two lines is the content of the element which can either be empty of consist of a series of other elements that can again contain other elements and so on. The document itself consists of a series of elements (some of which may contain other elements). Additionally, the following holds for a representation of an element:

The name of the element is an array of lowercase letters of the English alphabet. The name uniquely identifies the element in the document, and no two different elements have the same name. If element E is written in the content of element F (anywhere between the lines that denote the beginning and the end of element E), we say that F contains E or, in other words, that E is contained in F. We say that element E is the parent of element F if F is contained in E and there is not a single element G such that F is contained in G and G is contained in E.

CSS is a style sheet language used for describing the look and formatting of HTML elements when seen in a Web browser. An important part of that language are so-called selectors and classifiers. A classifier is a series of characters that begins with a dot and is followed by one or more classes separated by dots. Again, only lowercase letters of the English alphabet must appear in classes. Some examples of classifiers are: ".banana.apple", ".banana", ".apple.banana.mango". These classifiers consist of two, one and three classes, respectively. We say that a certain HTML element corresponds to a classifier if it belongs to all classes that are listed in the classifier.

You are given a document which consists of N lines and you are given M selectors. Write a programme that will, for each given selector, output the names of all elements that correspond to it. For each individual selector, the names must be output in the order they appear in the given document.

입력

출력

For each selector in the input data, output a single line. Firstly, output the number of elements that correspond to the given selector and then the names of corresponding elements in aforementioned order.

SCORING

In test cases worth 50% of total points, it will hold that selectors will not contain the character ‘>’.

입출력 예

input

22
<div id=’a’ class=’banana mango’>
<div id=’b’ class=’orange’>
<div id=’c’ class=’banana’>
<div id=’d’ class=’apple mango orange’>
<div id=’e’ class=’orange’>
</div>
</div>
</div>
</div>
<div id=’f’ class=’orange apple’>
<div id=’g’ class=’apple’>
<div id=’h’ class=’orange apple’>
<div id=’i’ class=’banana’>
</div>
</div>
</div>
<div id=’j’ class=’banana’>
</div>
</div>
</div>
<div id=’k’ class=’glupo voce daj mi sarme’>
</div>
5
.banana
.banana > .sarme
.banana > .orange > .banana
.banana .apple.orange > .orange
.mango > .orange .banana

output

4 a c i j
0
2 c j
1 e
3 c i j
출처:coci/2013-2014/contest7
번역:functionx

[질/답] [제출 현황] [푼 후(0)]
[ 채 점 ] [홈으로]  [뒤 로]