问题描述
试题编号: | 201809-3 |
试题名称: | 元素选择器 |
时间限制: | 1.0s |
内存限制: | 256.0MB |
问题描述: |
|
n,m=map(int,input().split())
doc=[]
for i in range(n):
s=input()
level=s.count('..')
tag=''
sid=''
if len(s.split())==1:
tag=s[level*2:]
else:
tag,sid=s.split()
tag=tag[level*2:]
node=-1
for j in range(i-1,-1,-1):
if doc[j]['level']==level-1:
node=j
break
doc.append({'tag':tag,'sid':sid,'level':level,'node':node})
num=[]
for i in range(m):
s=input()
num.append([])
flag=0
if len(s.split())==1:
if s[0]!='#':
for j in range(n):
if doc[j]['tag'].lower()==s.lower():
num[i].append(j+1)
flag+=1
else:
for j in range(n):
if doc[j]['sid']==s:
num[i].append(j+1)
flag+=1
else:
s=s.split()
for j in range(n):
parent=j
k=len(s)-1
while k>=0:
macth=False
if s[k][0]!='#':
if doc[parent]['tag'].lower()==s[k].lower():
macth=True
else:
if parent==j and k==len(s)-1:
break
else:
if doc[parent]['sid']==s[k]:
macth=True
else:
if parent==j and k==len(s)-1:
break
if macth:
k-=1
if k<0:
num[i].append(j+1)
flag+=1
break
if doc[parent]['node']==-1:
break
parent=doc[parent]['node']
num[i].insert(0,flag)
for i in num:
print(' '.join(map(str,i)))