Help me solve FROGV problem... i used DFS why it is giving a wrong answer

include <bits/stdc++.h>
using namespace std;

bool solve(long long int src,long long int dst,vector adj[],vector &vis){
vis[src] = 1;
queue q;
q.push(src);
while(!q.empty()){
long long int node = q.front();
q.pop();
for(auto it:adj[node]){
if(!vis[it]){
vis[it] = 1;
if(it==dst) return true;
q.push(it);
}
}
}
return false;
}

int main() {
// your code goes here
long long int n,k,p;
cin>>n>>k>>p;
vector<pair<long long int,long long int>> v;
for(long long int i=0;i<n;i++){
long long int x;
cin>>x;
v.push_back({x,i});
}
sort(v.begin(),v.end());
vector adj[n];
for(long long int i=0;i<n-1;i++){
if(v[i+1].first-v[i].first <= k){
adj[v[i+1].second].push_back(v[i].second);
adj[v[i].second].push_back(v[i+1].second);
}
}
for(long long int i=0;i<p;i++){
long long int x,y , count = 0;
cin>>x>>y;
x–;y–;
vector vis(n,0);
bool ans = solve(x,y,adj,vis);
if(ans==true) cout<<“Yes”<<endl;
else cout<<“No”<<endl;
}
return 0;
}