Of course you'll need to. That's the only way you get O(n log n) complexity instead of O(n^2) which gives it an edge over Bellman Ford.

Also, it ain't that tough to implement once you understand the algorithm and leverage STL.

Here's my code:

typedef pi pair<int>;const int n=1e5;vector<vector<pi> > G;int dist[n+1];void dijkstra(int src){priority_queue<pi, vector<pi>, greater<pi> > Q;int dist[n+1];fill(dist, dist + n + 1, INT_MAX);dist[src] = 0;Q.push(make_pair(0, src));while (!Q.empty()){