Help me in solving FROGV problem

My issue

My code

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

bool solve(long long int src,long long int dst,vector<long long int> adj[],vector<long long int> &vis){
    vis[src] = 1;
    queue<long long int> 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<long long int> 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<long long int> vis(n,0);
	    bool ans = solve(x,y,adj,vis);
	    if(ans==true) cout<<"Yes"<<endl;
	    else cout<<"No"<<endl;
	}
	return 0;
}

Problem Link: FROGV Problem - CodeChef