Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8931939
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 15, 20262026-06-15T09:13:32+00:00 2026-06-15T09:13:32+00:00

I am trying to use Dijkstra’s algorithm to find the shortest path from a

  • 0

I am trying to use Dijkstra’s algorithm to find the shortest path from a specific vertex (v0) to the rest of them. That is solved and works well with this code from this link below: http://en.literateprograms.org/index.php?title=Special:DownloadCode/Dijkstra%27s_algorithm_(Java)&oldid=15444

I am having trouble with assigning the Edge array in a for loop from the user input, as opposed to hard-coding it like it is here.

Any help assigning a new edge to Edge[] adjacencies from each vertex? Keeping in mind it could be 1 or multiple edges.

class Vertex implements Comparable<Vertex>
{
    public final String name;
    public Edge[] adjacencies;
    public double minDistance = Double.POSITIVE_INFINITY;
    public Vertex previous;
    public Vertex(String argName) { name = argName; }
    public String toString() { return name; }

    public int compareTo(Vertex other){
    return Double.compare(minDistance, other.minDistance);
    }
}


class Edge{
    public final Vertex target;
    public final double weight;

    public Edge(Vertex argTarget, double argWeight){
        target = argTarget; weight = argWeight; }
    }

public static void main(String[] args)
{
    Vertex v[] = new Vertex[3];
    Vertex v[0] = new Vertex("Harrisburg");
    Vertex v[1] = new Vertex("Baltimore");
    Vertex v[2] = new Vertex("Washington");

    v0.adjacencies = new Edge[]{ new Edge(v[1],  1),
                             new Edge(v[2],  3) };
    v1.adjacencies = new Edge[]{ new Edge(v[0], 1),
                             new Edge(v[2],  1),};
    v2.adjacencies = new Edge[]{ new Edge(v[0],  3),
                                 new Edge(v[1],  1)  };

    Vertex[] vertices = { v0, v1, v2};
       /*Three vertices with weight: V0 connects (V1,1),(V2,3)
                                     V1 connects (V0,1),(V2,1)
                                     V2 connects (V1,1),(V2,3)
       */  
    computePaths(v0);
    for (Vertex v : vertices){
    System.out.println("Distance to " + v + ": " + v.minDistance);
    List<Vertex> path = getShortestPathTo(v);
    System.out.println("Path: " + path);
    }
}
}

The above code works well in finding the shortest path from v0 to all the other vertices. The problem occurs when assigning the new edge[] to edge[] adjacencies.

For example this does not produce the correct output:

for (int i = 0; i < total_vertices; i++){
        s = br.readLine();
        char[] line = s.toCharArray();
        for (int j = 0; j < line.length; j++){  
           if(j % 4 == 0 ){ //Input: vertex weight vertex weight: 1 1 2 3
            int vert = Integer.parseInt(String.valueOf(line[j]));
            int w = Integer.parseInt(String.valueOf(line[j+2]));
            v[i].adjacencies = new Edge[] {new Edge(v[vert], w)};
        }
        }
    }

As opposed to this:

v0.adjacencies = new Edge[]{ new Edge(v[1],  1),
                         new Edge(v[2],  3) };

How can I take the user input and make an Edge[], to pass it to adjacencies? The problem is it could be 0 edges or many.

Any help would be much appreciated
Thanks!

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-15T09:13:35+00:00Added an answer on June 15, 2026 at 9:13 am

    In your case you are assigning v[i].adjacencies for each iteration of j… SO it means it line.length = 8, then v[i].adjacencies is assigned 2 times. I do not think that’s your intention.

        for (int j = 0; j < line.length; j++){  
           if(j % 4 == 0 ){ //Input: vertex weight vertex weight: 1 1 2 3
            int vert = Integer.parseInt(String.valueOf(line[j]));
            int w = Integer.parseInt(String.valueOf(line[j+2]));
            v[i].adjacencies = new Edge[] {new Edge(v[vert], w)};
        }
    

    You can change your code something like this…

        Edge[] edges = new Edge[line.length/4];  
        for (int j = 0; j < line.length; j++){           
           if(j % 4 == 0 ){ //Input: vertex weight vertex weight: 1 1 2 3
            int vert = Integer.parseInt(String.valueOf(line[j]));
            int w = Integer.parseInt(String.valueOf(line[j+2]));
            edges[j/4] =  {new Edge(v[vert], w)};
        }
       v[i].adjacencies = edges;
    

    It might not be exact code, but you have to assign out side the loop.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I am trying to find out if it is possible to use Dijkstra's algorithm
Trying to use Powershell to script the removal of specific custom errors from an
I'm writing an application that uses Dijkstra algorithm to find minimal paths in the
I'm trying to implement Dijkstra's algorithm in Java (self-study). I use the pseudo-code provided
i'm trying use webview to load a image from sdcard i use this path
I am trying use a from a multi-dimensional array that I create in another
I'm trying use mod_rewrite to rewrite URLs from the following: http://www.site.com/one-two-file.php to http://www.site.com/one/two/file.php The
Basically, I know how to create graph data structures and use Dijkstra's algorithm in
I'm trying use the Str[fixnum] to return a specific portion of a string. #
I was trying use svn to find a checkin using svn log, but it

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.