rt,代码如下
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int n,k,q,l[N],dp[105][N];
vector <int> v[N];
struct qry{
int r,c;
}a[N];
void solve()
{
memset(dp,0,sizeof(dp));
cin>>n>>k>>q;
for(int i=1;i<=n;i++)
{
cin>>l[i];
v[i].clear();
v[i].push_back(-1);
for(int j=1;j<=l[i];j++)
{
int x;
cin>>x;
v[i].push_back(x);
}
}
int maxr=0;
for(int i=1;i<=q;i++)
{
cin>>a[i].r>>a[i].c;
maxr=max(maxr,a[i].r);
}
dp[0][1]=-1;
for(int p=1;p<=maxr;p++)
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=l[i];j++)
{
if(dp[p-1][v[i][j]]!=0 && dp[p-1][v[i][j]]!=i)
{
int r=j+k-1;
int jj=j+1;
for(;jj<=r && jj<=l[i];jj++)
{
if(dp[p][v[i][jj]]) dp[p][v[i][j]]=-1;
else dp[p][v[i][jj]]=i;
}
}
}
}
}
// for(int i=1;i<=maxr;i++)
// {
// for(int j=1;j<=10;j++)
// {
// cout<<dp[i][j]<<" ";
// }
// cout<<"\n";
// }
for(int i=1;i<=q;i++)
{
if(dp[a[i].r][a[i].c]==0) cout<<"0\n";
else cout<<"1\n";
}
}
int main()
{
int _;
cin>>_;
while(_--)
{
solve();
}
}