90分最后一个点WA 求助
查看原帖
90分最后一个点WA 求助
226367
glorious_dream楼主2022/3/18 17:05
#include<bits/stdc++.h>
using namespace std;
inline int read(){
	int x=0,f=1;char ch=getchar();
	while(ch<'0'||ch>'9'){if(ch == '-') f=-1 ; ch=getchar();}
	while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+ch-48 ; ch=getchar();}
	return x*f;
}
const int M = 500010;
int n,m;
int tot = 1;
int ch[M][30];
bool bo[M][510];
void insert(string s,int num){
	int len = s.length();
	int u=1;
	for(register int i(0) ; i<len ; i=-~i){
		int c = s[i] - 'a';
		if(!ch[u][c]) ch[u][c] = ++tot;
		u = ch[u][c];
	}
	bo[u][num] = 1;
	return;
}
void find(string s){
	int len = s.length();
	int u=1,flag=0;
	for(register int i(0) ; i<len ; i=-~i){
		int c = s[i] - 'a';
		if(!ch[u][c]){flag=1;break;}
		u = ch[u][c];
	}
	if(!flag){for(register int i(1) ; i<=n ; i=-~i){if(bo[u][i]) printf("%d ",i);}}
	printf("\n");
	return;
}
int main(){
	n=read();
	for(register int i(1) ; i<=n ; i=-~i){
		int xxx;
		xxx=read();
		string a;
		for(register int j(1) ; j<=xxx ; j=-~j){cin >> a;insert(a,i);}
	}
	m=read();
	string b;
	while(m--){cin >> b;find(b);}
	return 0;
}

2022/3/18 17:05
加载中...