From a894cc9563c43e7d5df21915aa8f5925311edc56 Mon Sep 17 00:00:00 2001 From: Aditya Maheshwari <73491810+AdityaDarak007@users.noreply.github.com> Date: Thu, 13 Oct 2022 04:00:42 -0700 Subject: [PATCH] Create Dijkstra Algorithm --- Dijkstra Algorithm | 84 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 Dijkstra Algorithm diff --git a/Dijkstra Algorithm b/Dijkstra Algorithm new file mode 100644 index 0000000..b2ad0dd --- /dev/null +++ b/Dijkstra Algorithm @@ -0,0 +1,84 @@ +import java.util.*; + +class Node implements Comparator +{ + private int v; + private int weight; + + Node(int _v, int _w) { v = _v; weight = _w; } + + Node() {} + + int getV() { return v; } + int getWeight() { return weight; } + + @Override + public int compare(Node node1, Node node2) + { + if (node1.weight < node2.weight) + return -1; + if (node1.weight > node2.weight) + return 1; + return 0; + } +} + +class Main +{ + void shortestPath(int s, ArrayList> adj, int N) + { + int dist[] = new int[N]; + + for(int i = 0;i pq = new PriorityQueue(N, new Node()); + pq.add(new Node(s, 0)); + + while(pq.size() > 0) { + Node node = pq.poll(); + + for(Node it: adj.get(node.getV())) { + if(dist[node.getV()] + it.getWeight() < dist[it.getV()]) { + dist[it.getV()] = dist[node.getV()] + it.getWeight(); + pq.add(new Node(it.getV(), dist[it.getV()])); + } + } + } + System.out.println("The distances from source "+s+" are : "); + for (int i = 0; i < N; i++) + { + System.out.print( dist[i] + " "); + } + } + public static void main(String args[]) + { + int n = 5; + ArrayList > adj = new ArrayList >(); + + for (int i = 0; i < n; i++) + adj.add(new ArrayList()); + + adj.get(0).add(new Node(1, 2)); + adj.get(1).add(new Node(0, 2)); + + adj.get(1).add(new Node(2, 4)); + adj.get(2).add(new Node(1, 4)); + + adj.get(0).add(new Node(3, 1)); + adj.get(3).add(new Node(0, 1)); + + adj.get(3).add(new Node(2, 3)); + adj.get(2).add(new Node(3, 3)); + + adj.get(1).add(new Node(4, 5)); + adj.get(4).add(new Node(1, 5)); + + adj.get(2).add(new Node(4, 1)); + adj.get(4).add(new Node(2, 1)); + + Main obj = new Main(); + obj.shortestPath(0, adj, n); + + } +}