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.java
import 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;
}