diff --git a/Graphs/PathWithMinimumEffort.cpp b/Graphs/PathWithMinimumEffort.cpp new file mode 100644 index 0000000..1b28f4e --- /dev/null +++ b/Graphs/PathWithMinimumEffort.cpp @@ -0,0 +1,42 @@ +class Solution { +public: + int minimumEffortPath(vector>& heights) { + + // {diff,{row,col}} + priority_queue>, + vector>>, + greater>>>pq; + int n=heights.size(); + int m=heights[0].size(); + vector>dist(n,vector(m,1e9)); + dist[0][0]=0; + pq.push({0,{0,0}}); + int dr[]={-1,0,1,0}; + int dc[]={0,1,0,-1}; + while(!pq.empty()){ + auto it=pq.top(); + pq.pop(); + int diff=it.first; + int row=it.second.first; + int col=it.second.second; + if(row==n-1 && col==m-1){ + return diff; + } + // {row-1,col} ,{row,col+1},{row+1,col},{row,col-1} + for(int i=0;i<4;i++){ + int nrow=row+dr[i]; + int ncol=col+dc[i]; + if(nrow>=0 && ncol>=0 && nrow