样例已过,全部WA
查看原帖
样例已过,全部WA
611895
lgcsxy楼主2022/8/16 19:49
#include<iostream>
using namespace std;

int son[1005][5000][26],idx[1005];

int n,m;

void insert(int x,char str[]){
	int p=0;
	for(int i=0;str[i];i++){
		int t=str[i]-'a';
		if(!son[x][p][t])	son[x][p][t]=++idx[x];
		p=son[x][p][t];
	}
}

bool check(int x,char str[]){
	int p=0;
	for(int i=0;str[i];i++){
		int t=str[i]-'a';
		if(!son[x][p][t])
			return false;
		p=son[x][p][t];
	}
	return true;
}

int main(){
	char str[30];
	int n;
	cin>>n;
	for(int i=1;i<=n;i++){
		int t;
		cin>>t;
		while(t--){
			//scanf("%s",str);
			cin>>str;
			insert(i,str);
		} 
	}
	cin>>m;
	while(m--){
		int res=0,flag=0;
		//scanf("%s",str);
		cin>>str;
		for(int i=1;i<=n;i++)
			if(check(i,str)){
				if(flag)
					printf(" ");
				printf("%d",i);
				flag=1;
			}
		if(m!=0)
			printf("\n");	
	}
	return 0;
}
2022/8/16 19:49
加载中...