Hackerrank Snakes and Ladders : The Quickest Way Up Solution

#include <iostream>
#include <vector>
#include <queue>
using namespace std;
int main(){
    int t;
    cin>>t;
    while(t--){
        vector<int> a(101);
        for(int i=1;i<101;i++)
            a[i]=i;
        int l,s;
        cin>>l;
        for(int i=0;i<l;i++)
        {
            int x,y;
            cin>>x>>y;
            a[x]=y;
        }
        cin>>s;
        for(int i=0;i<s;i++){
            int x,y;
            cin>>x>>y;
            a[x]=y;
        }
        vector<int> dist(101,-1);
        queue<int> q;
        dist[1]=0;
        q.push(1);
        int ans=-1;
        while(!q.empty()&&ans==-1){
            int u=q.front();
            q.pop();
            for(int i=u+1;i<u+7&&i<101;i++)
            {
                if(dist[a[i]]==-1){
                    dist[a[i]]=dist[u]+1;
                    if(a[i]==100){
                        ans=dist[a[i]];
                        break;
                    }
                    q.push(a[i]);
                }
            }
        }
        cout<<ans<<endl;
    }
}

Comments