Advertisement
unknown_0711

Untitled

Dec 29th, 2022
19
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.32 KB | None | 0 0
  1. import java.io.*;
  2. import java.util.*;
  3. import java.lang.*;
  4.  
  5. public class Main {
  6. public static class Node {
  7. int val, w;
  8. Node(int val, int weight) {
  9. this.val = val;
  10. this.w = weight;
  11. }
  12. }
  13. public static int[] dijkstra(int V, ArrayList<ArrayList<ArrayList<Integer>>> adj, int S)
  14. {
  15. // Write your code here
  16. int[] ans = new int[V];
  17. Arrays.fill(ans, -1);
  18. PriorityQueue<Node> pq = new PriorityQueue<>((Node a, Node b) -> a.w - b.w);
  19. pq.offer(new Node(S, 0));
  20.  
  21. while(!pq.isEmpty()) {
  22. Node temp = pq.poll();
  23. if (ans[temp.val] != -1) continue;
  24. ans[temp.val] = temp.w;
  25.  
  26. for (List<Integer> next : adj.get(temp.val)) {
  27. pq.offer(new Node(next.get(0), temp.w + next.get(1)));
  28. }
  29. }
  30.  
  31. return ans;
  32. }
  33.  
  34. public static void main(String args[]) throws IOException {
  35.  
  36. BufferedReader read =
  37. new BufferedReader(new InputStreamReader(System.in));
  38. String str[] = read.readLine().trim().split(" ");
  39. int V = Integer.parseInt(str[0]);
  40. int E = Integer.parseInt(str[1]);
  41.  
  42. ArrayList<ArrayList<ArrayList<Integer>>> adj = new ArrayList<ArrayList<ArrayList<Integer>>>();
  43. for(int i=0;i<V;i++)
  44. {
  45. adj.add(new ArrayList<ArrayList<Integer>>());
  46. }
  47.  
  48. int i=0;
  49. while (i++<E) {
  50. String S[] = read.readLine().trim().split(" ");
  51. int u = Integer.parseInt(S[0]);
  52. int v = Integer.parseInt(S[1]);
  53. int w = Integer.parseInt(S[2]);
  54. ArrayList<Integer> t1 = new ArrayList<Integer>();
  55. ArrayList<Integer> t2 = new ArrayList<Integer>();
  56. t1.add(v);
  57. t1.add(w);
  58. t2.add(u);
  59. t2.add(w);
  60. adj.get(u).add(t1);
  61. adj.get(v).add(t2);
  62. }
  63.  
  64. int S = Integer.parseInt(read.readLine());
  65.  
  66. int[] ptr = dijkstra(V, adj, S);
  67.  
  68. for(i=0; i<V; i++)
  69. System.out.print(ptr[i] + " ");
  70. System.out.println();
  71. }
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement