rt,#1TLE,求助如何优化
#include<bits/stdc++.h>
#define int long long
namespace IO{
inline bool isnum(char ch){return ch>='0'&&ch<='9';}
inline int read()
{
int x=0,f=1;char ch=getchar();
while (!isnum(ch)){if (ch=='-') f=-1;ch=getchar();}
while (isnum(ch)){x=x*10+ch-48;ch=getchar();}
return x*f;
}
inline void out(int x,char ch){
if(x<0){putchar('-');x=-x;}
if(x>9)out(x/10,'/');
putchar(x%10+'0');
if(ch=='l')putchar('\n');
if(ch=='s')putchar(' ');
}
}
using namespace std;
using namespace IO;
inline int slen(string s){return s.size();}
string s1[100001],s2[100001];
int nxt[100001],n[100001],m[100001], a = read(), b = read(), q = read();
signed main()
{
for(int i = 1; i <= a; ++i) {
cin >> s2[i];
m[i] = slen(s2[i]);
s2[i] = s2[i].insert(0, "*");
}
for(int i = 1; i <= b; ++i) {
cin >> s1[i];
n[i] = slen(s1[i]);
s1[i] = s1[i].insert(0, "*");
}
while(q--){
int j, ans = 0, x = read(), y = read();
bool flag1;
for (int k = 1; k <= a; ++k) {
j = 0; nxt[0] = nxt[1] = 0; flag1 = 0;
for(register int i=2;i<=m[k];i++){
while(j>0&&s2[k][j+1]!=s2[k][i])j=nxt[j];
if(s2[k][j+1]==s2[k][i])j++;
nxt[i]=j;
}
j = 0;
for(int i=1;i<=n[x];i++){
while(j>0&&s2[k][j+1]!=s1[x][i])j=nxt[j];
if(s2[k][j+1]==s1[x][i])j++;
if(j==m[k]){
flag1 = 1;
break;
}
}
if(flag1) {
j = 0;
for(int i=1;i<=n[y];i++){
while(j>0&&s2[k][j+1]!=s1[y][i])j=nxt[j];
if(s2[k][j+1]==s1[y][i])j++;
if(j==m[k]){
++ans;
break;
}
}
}
}
out(ans ,'l');
}
return 0;
}