rendered paste body// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.// Jad home page: http://www.kpdus.com/jad.html// Decompiler options: packimports(3) // Source File Name: DirectedGraph.javaimport datastructures.PriQueHeap;import datastructures.PriorityQueues;import java.util.*;public class DirectedGraph{ /* member class not found */ class PathObject {} public DirectedGraph(int i) { noOfEdges = 0; neighbours = (LinkedList[])new LinkedList[i]; for(int j = 0; j < i; j++) neighbours[j] = new LinkedList(); } public void addEdge(Edge edge) { try { neighbours[edge.from].add(edge); } catch(IndexOutOfBoundsException indexoutofboundsexception) { throw new IndexOutOfBoundsException((new StringBuilder()).append("Wrong Node Number in Graph: ").append(edge.from).toString()); } noOfEdges++; } public Iterator shortestPath(int i, int j) { PriQueHeap priqueheap = new PriQueHeap(); boolean aflag[] = new boolean[neighbours.length]; Arrays.fill(aflag, false); priqueheap.add(new PathObject(i, 0.0D, new LinkedList())); int k = 1; while(!priqueheap.isEmpty()) { PathObject pathobject = (PathObject)priqueheap.removeMin(); k--; if(pathobject.to == j) return pathobject.path.iterator(); if(!aflag[pathobject.to]) { aflag[pathobject.to] = true; Iterator iterator = neighbours[pathobject.to].iterator(); while(iterator.hasNext()) { Edge edge = (Edge)iterator.next(); if(!aflag[edge.to]) { k++; LinkedList linkedlist = new LinkedList(pathobject.path); linkedlist.add(edge); priqueheap.add(new PathObject(edge.to, pathobject.distance + edge.weight(), linkedlist)); } } } } throw new RuntimeException((new StringBuilder()).append("No path exists from ").append(i).append(" till ").append(j).toString()); } private LinkedList neighbours[]; private int noOfEdges;}