样例都没输出(帮助者都可关注)
查看原帖
样例都没输出(帮助者都可关注)
576639
woshishabi11451444楼主2023/7/13 16:16
#include<bits/stdc++.h>
using namespace std;
const int N=5e5+5;
char s[N];
int n,m,trie[N][53];
map<int,int> mp[N];
int get(char x){
	return x-'A';
}
void insert(int k){
	cin>>s;
	int now=0,len=strlen(s);
	for(int i=0;i<len;i++){
		int v=get(s[i]);
		if(!trie[now][v]) trie[now][v]=1;
	}
	mp[now][k]=1;
}
int check(char x[]){
	int now=0,len=strlen(x);
	for(int i=0;i<len;i++){
		int v=get(s[i]);
		if(!trie[now][v]) return 0;
		now=trie[now][v];
	}
	return now;
}
int main(){
	cin>>n;
	for(int i=1,x;i<=n;i++){
		cin>>x;
		for(int j=1;j<=x;j++) insert(i);
	}
	cin>>m;
	for(int i=1;i<=m;i++){
		cin>>s;
		int v=check(s);
		if(v){
			for(int i=1;i<=n;i++){
				if(mp[v][i]) cout<<i<<' ';
			}
		}		
		cout<<'\n';
	}
	return 0;
}
2023/7/13 16:16
加载中...