¿En qué situaciones alguien usaría Dijkstra sin un montón sobre Dijkstra con un montón?

Para gráficos densos donde E está dentro de un factor de V ^ 2, la versión simple superará a las implementaciones de montón. Incluso con los montones de Fibonacci (que conduce a una solución que es asintóticamente mejor en todos los casos), hay un costo más alto por operación.

El punto de corte exacto depende en gran medida de la implementación, la arquitectura de la CPU, las propiedades de los gráficos, etc.

En la práctica, también hay muchos casos en que la solución más simple es lo suficientemente buena y esa es una razón suficiente para usarla (un código más simple es más confiable y más fácil de mantener).

En los concursos suele ser bastante fácil. No necesita la solución más rápida, solo una que sea lo suficientemente rápida. Si V está en los miles bajos, puede usar un algoritmo V ^ 2. Si es alrededor de 10,000 o más, no puedes usar uno. Por lo general, será muy claro cuál.