importjava.util.Queue;importjava.util.LinkedList;public classdijkstra{public static voidmain(String args[]){
System.out.println("dijkstra algo");
/*construct the adjacent table begin*/
Node n0= new Node(0);
Node n1= new Node(1);
Node n2= new Node(2);
Node n3= new Node(3);
Node n4= new Node(4);
Node n5= new Node(5);
AdjNode n0n1= new AdjNode(7,n1);
AdjNode n0n2= new AdjNode(9,n2);
AdjNode n0n5= new AdjNode(14,n5);
AdjNode n1n0= new AdjNode(7,n0);
AdjNode n1n2= new AdjNode(10,n2);
AdjNode n1n3= new AdjNode(15,n3);
AdjNode n2n0= new AdjNode(9,n0);
AdjNode n2n5= new AdjNode(2,n5);
AdjNode n2n3= new AdjNode(11,n3);
AdjNode n3n1= new AdjNode(15,n1);
AdjNode n3n2= new AdjNode(11,n2);
AdjNode n3n4= new AdjNode(6,n4);
AdjNode n4n3= new AdjNode(6,n3);
AdjNode n4n5= new AdjNode(9,n5);
AdjNode n5n4= new AdjNode(9,n4);
AdjNode n5n2= new AdjNode(2,n2);
AdjNode n5n0= new AdjNode(14,n0);
AdjNode[] n0adj={n0n1,n0n2,n0n5};
AdjNode[] n1adj={n1n0,n1n2,n1n3};
AdjNode[] n2adj={n2n0,n2n5,n2n3};
AdjNode[] n3adj={n3n1,n3n2,n3n4};
AdjNode[] n4adj={n4n3,n4n5};
AdjNode[] n5adj={n5n4,n5n2,n5n0};
n0.addAdjNodes(n0adj);
n1.addAdjNodes(n1adj);
n2.addAdjNodes(n2adj);
n3.addAdjNodes(n3adj);
n4.addAdjNodes(n4adj);
n5.addAdjNodes(n5adj);
/*construct the adjacent table end*/
Node[] G={n0,n1,n2,n3,n4,n5};
Queue queue = new LinkedList();
AdjNode[] currAdjNodes;
n0.color= 1;
n0.vt++;
n0.setShortestPathLen(0);
queue.offer(n0);
Node currNode=queue.poll();while(currNode != null){
currAdjNodes=currNode.getAllAdjNodes();for(int i=0;i (currNode.getShortestPathLen()+currAdjNodes[i].weight)){
currAdjNodes[i].adjNode.setShortestPathLen(currNode.getShortestPathLen()+currAdjNodes[i].weight);
currAdjNodes[i].adjNode.setPreNode(currNode);
}if(currAdjNodes[i].adjNode.color == 0){
currAdjNodes[i].adjNode.color= 1;
currAdjNodes[i].adjNode.vt++;
queue.offer(currAdjNodes[i].adjNode);
}
}
currNode.color= 2;
currNode=queue.poll();
}for(int i=0;i
System.out.println("shortest path of " + i + "node:" + G[i].getShortestPathLen()+" vt:"+G[i].vt);
}
}
}