Ohk let me clear, Dijkstra's algorithm is just used to find the single source shortest path in the graph.
In algorithm everytime we just pop out the smallest cost vertex from the data structure and for each adjacent child we just simply update the cost of adjacent child and insert the updated cost again in our data structure and remove the old cost from the data structure.
Hence we need smallest cost from list of cost.
We need erase and insert operation.
So it's best to work on data structure which support all these operation with best complexity , like erasing any element from set of element or inserting or extract min element from list.
Priority_queue is good for all these operation with log n factor, as it was made in the form of tree ( balanced type ) which will be able to do operation with logn complexity,
We can use set data structure, which is also know as balance binary search tree also know as avl tree
which can support operation with log n factor.
Hence all of the above mentioned data structure have same behaviour in all of these operation( insert , erase , update etc )
Not exactly, but almost
AVL tree all operation insert , search , delete in o(log N)
Fibonacci heap delete min in o(log n) , find min in o(1)
So aproximately all have similar complexity, but in case of matrix representation of the graph it will increase the overall complexity because in case of matrix we need more space and more traversal.
While in case of adjacency list , space occupied is equivalent to number of edges that is E , which means less traversal , you can go directly from any node to its any child whithout checking the edge is present or not as in case of adjacency matrix.