涉及知识点:
solution:
std:
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int maxn = 5005;
vector<int> v[maxn];
int dis[maxn];
int n,m,p,t,s,x,y;
struct node{
int x,len;
};
queue<node> q;
void bfs()
{
int ans = 0;
while(!q.empty()){
node now = q.front();
q.pop();
for(int i=0;i<v[now.x].size();i++){
if(dis[v[now.x][i]])
continue ;
dis[v[now.x][i]] = now.len + 1;
q.push(node{v[now.x][i] , now.len + 1});
}
}
for(int i=1;i<=n;i++)
if((dis[i] == -1 ) || (dis[i] != 0 && dis[i] <= s))
ans++;
cout<<ans<<endl;
return ;
}
int main()
{
cin>>n>>m>>p;
for(int i=1;i<=m;i++)
cin>>x>>y,v[x].push_back(y),v[y].push_back(x);
while(p--){
cin>>t>>s;
memset(dis,0,sizeof(dis));
for(int i=1;i<=t;i++)
cin>>x,q.push(node{x,0}),dis[x] = -1;
bfs();
}
return 0;
}