Dijkstra's Algorithm C++
The &lt;iostream&gt; header is not used.

min_distance can theoretically return an uninitialized value if all elements of visited_set are nonzero.  This shouldn't happen here, but initializing min_index = 0 would remove a potential problem and compiler warning.

display assumes that node 0 is the start node, but that value is passed in to dijkstra.  It should be passed in as a parameter.

In dijkstra, the graph parameter could be const int graph[N][N], which would then allow the graph variable in main to also be const.  The parent[0] = -1 assignment seems to be a typo.  It should be parent[i] = -1; to initialize all elements of parent.  The for (int n = 0; n &lt; N; n++) loop should have curly brackets around its body.  While not currently necessary, having them in can avoid future problems when the code is modified and makes it clearer what is in the loop body rather than looking like a line with bad indentation.