All pastes #391895 Raw Edit

Something

public text v1 · immutable
·published 2007-03-12 14:45 UTC
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;
}