242C. King's Path - Codeforces Solution C++

  Problem Link : 242C. King's Path 


✅ C++ Solution :

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

#define ll long long int
#define pp pair<ll,ll> 
#define mp make_pair

int lt[]={-1,-1,-1,1,1,1,0,0};
int rt[]={-1,0,1,-1,0,1,-1,1};

int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	ll x0,y0,x1,y1;
	set<pp> st;
    cin>>x0>>y0>>x1>>y1;
	ll n,r,a,b;
	cin>>n;
	for(ll i=0;i<n;i++)
	{
		cin>>r>>a>>b;
		for(ll j=a;j<=b;j++)
		{
			if(st.find(mp(r,j))==st.end())
				st.insert(mp(r,j));
		}
	}
	ll cnt=0;
	st.erase(mp(x0,y0));
	queue<pp> q;
	pp p;
	q.push(mp(x0,y0));
	int x,y;
	bool f=0;
	while(!q.empty())
	{
		int s=q.size();
		while(s--)
		{
			p=q.front();
			q.pop();
			if(p==mp(x1,y1))
			{
			    f=1;
				break;
			}

			for(int i=0;i<8;i++)
			{
				x=p.first+lt[i];
				y=p.second+rt[i];
				if(st.find(mp(x,y))!=st.end())
				{
					st.erase(mp(x,y));
					q.push(mp(x,y));
				}
			}
		}
        if(f)
            break;
		cnt++;	
	}
    if(f)
	    cout<<cnt<<"\n";
    else
        cout<<"-1\n";
}

 

Thank you for your patience reading. If you enjoyed this post, I’d be very grateful if you’d help it spread by emailing it to a friend, or sharing it on Whatsapp or Facebook. 

😇Happy Learning!!