Site Message

Only Premium Users can view the Question

Site Message

Only Premium Users can view the Question

Site Message

Only Premium Users can view the Question

Site Message

Only Premium Users can view the Question

Site Message

Only Premium Users can view the Question

Question: DBOI, Recent Online Assessment Questions (Technical Analyst | FTE) | The Maze Runner | Charged Particles | A Beautiful Sequence
0
Entering edit mode

ADD COMMENTlink 2.8 years ago PoGo 2.5k
1
Entering edit mode

Q1)

#include <iostream>
#include<bits/stdc++.h>
using namespace std;
int shortest_time(int n,int m,vector<vector<int>>&matrix,int p){
  vector<vector<int>>distance(n,vector<int>(m,INT_MAX));
  set<pair<int,pair<int,int>>>s;
  distance[0][0]=0;
  s.insert({0,{0,0}});
  int drow[]={0,0,1,-1};
  int dcol[]={1,-1,0,0};
  while(!s.empty()){
      auto it=s.begin();
      int r=(*it).second.first;
      int c=(*it).second.second;
      int d=(*it).first;
      s.erase(it);
      for(int i=0;i<=3;i++){
         int r1=r+drow[i];
         int c1=c+dcol[i];
         if(0<=r1&&r1<n&&0<=c1&&c1<m&&(matrix[r1][c1]==p||matrix[r1][c1]==0)&&1+d< distance[r1][c1]){
             distance[r1][c1]=min(distance[r1][c1],1+d);
             
             if(r1==n-1&&c1==m-1){
                 return 1+d;
             }
             s.insert({distance[r1][c1],{r1,c1}});
         }
      }
     
  }
   return -1;
}
int main()
{
   int n,m;
   cin>>n>>m;
   vector<vector<int>>maze(n,vector<int>(m,0));
   for(int i=0;i<n;i++){
       for(int j=0;j<m;j++){
           char k;
           cin>>k;
           if(k=='*'){
               maze[i][j]=1;
               
           }else if(k=='#'){
               maze[i][j]=2;
           }else{
               maze[i][j]=0;
           }
       }
   }
   int p1=shortest_time(n,m,maze,1);
   int p2=shortest_time(n,m,maze,2);
   cout<<p1<<endl;
   cout<<p2<<endl;
}
 

ADD COMMENTlink 2.8 years ago Viswanath • 20

Login before adding your answer.

Similar Posts
Loading Similar Posts