title: Dijkstra's algorithm in Java source and target
body: <p>I'm trying to use Dijkstra's algorithm to find the shortest path between two nodes in the graph.</p>
  
  <p>what should I do to the following code to stop calculating when the shortest path between the source and the target is found? </p>
  
  <pre><code>public void calculate(Vertex source){
      // Algo:
      // 1. Take the unvisited node with minimum weight.
      // 2. Visit all its neighbours.
      // 3. Update the distances for all the neighbours (In the Priority Queue).
      // Repeat the process till all the connected nodes are visited.
  
      source.minDistance = 0;
      PriorityQueue&lt;Vertex&gt; queue = new PriorityQueue&lt;Vertex&gt;();
      queue.add(source);
  
      while(!queue.isEmpty()){
  
          Vertex u = queue.poll();
  
          for(Edge neighbour:u.neighbours){
              Double newDist = u.minDistance+neighbour.weight;
  
              if(neighbour.target.minDistance&gt;newDist){
                  // Remove the node from the queue to update the distance value.
                  queue.remove(neighbour.target);
                  neighbour.target.minDistance = newDist;
  
                  // Take the path visited till now and add the new node.s
                  neighbour.target.path = new LinkedList&lt;Vertex&gt;(u.path);
                  neighbour.target.path.add(u);
  
                  //Reenter the node with new distance.
                  queue.add(neighbour.target);                    
              }
          }
      }
  }
  </code></pre>