0分求助
查看原帖
0分求助
573334
yzkadbq_qwq楼主2023/5/13 11:32
#include<bits/stdc++.h>
using namespace std;
struct node{
	int son[26];
	bool flag;
} ch[1001][10001];
int m[1001],n,top=0;
void insert(int k,string a){
	int p,len=a.length();
	for(int i=0;i<len;i++){
		int c=a[i]-'a'+1;
		if(!ch[k][i].son[c]) ch[k][i].son[c]=++top;
		p=ch[k][p].son[c];
	}
	ch[k][p].flag=1;
	return;
}
bool find(int k,string a){
	int p,len=a.length();
	for(int i=0;i<len;i++){
		int c=a[i]-'a'+1;
		if(!ch[k][i].son[c]) return 0;
		p=ch[k][p].son[c];
	}
	return ch[k][p].flag;
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		int l;
		cin>>l;
		for(int j=1;j<=l;j++){
			string s;
			cin>>s;
			insert(i,s);
		}
	}
	int q;
	cin>>q;
	while(q--){
		string s;
		cin>>s;
		for(int i=1;i<=n;i++){
			if(find(i,s)){
				cout<<i<<" ";
			}
		}
		cout<<endl;
	}
	return 0;
} 
2023/5/13 11:32
加载中...