You process every edge once. For every edge, you might push to the priority queue. Pushing takes . Total time: with a binary heap. Space: for adjacency list and distance array, plus for the priority queue.
With Fibonacci heap, you can get , but binary heap is simpler and fast enough for competitive programming.