The heap stores (effort, row, col). You pop the smallest effort first. This ensures that when you reach the bottom-right cell, the effort you popped is the minimum possible maximum effort. Start with (0, 0, 0) in the heap (effort to reach the starting cell). Use a dist array where dist[r][c] is the best effort to reach cell (r, c).
Initialize all distances to infinity except dist[0][0] = 0. When you pop (e, r, c), if e > dist[r][c], skip it (already found a better path). Otherwise, process neighbors and push updates.