Advertisement
Guest User

Untitled

a guest
Jul 20th, 2019
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.02 KB | None | 0 0
  1. package matrix;
  2.  
  3. import java.util.*;
  4. import java.lang.*;
  5. import java.io.*;
  6.  
  7. class ShortestPath
  8. {
  9.  
  10. static int N= 4;
  11. static int dim = N*N;
  12.  
  13. static final int V=dim;
  14.  
  15. static void propagazione(int matrix[][], int x) {
  16. for(int j=0; j<dim; j++) {
  17. for(int i=0; i<dim; i++) {
  18. if(matrix[x][i]==j) {
  19. System.out.print(i + ", ");
  20. }
  21. }
  22. System.out.println("----------------------");
  23. }
  24.  
  25. return;
  26. }
  27.  
  28. int minDistance(int dist[], Boolean sptSet[])
  29. {
  30. int min = Integer.MAX_VALUE, min_index=-1;
  31.  
  32. for (int v = 0; v < V; v++)
  33. if (sptSet[v] == false && dist[v] <= min)
  34. {
  35. min = dist[v];
  36. min_index = v;
  37. }
  38.  
  39. return min_index;
  40. }
  41.  
  42. void printSolution(int dist[], int n)
  43. {
  44. System.out.println("Vertex Distance from Source");
  45. for (int i = 0; i < V; i++)
  46. System.out.println(i+" \t\t "+dist[i]);
  47. }
  48.  
  49. int[] dijkstra(int graph[][], int src)
  50. {
  51.  
  52. Boolean sptSet[] = new Boolean[V];
  53. int[] dist = new int[V];
  54.  
  55. for (int i = 0; i < V; i++)
  56. {
  57. dist[i] = Integer.MAX_VALUE;
  58. sptSet[i] = false;
  59. }
  60.  
  61. dist[src] = 0;
  62.  
  63. for (int count = 0; count < V-1; count++)
  64. {
  65. int u = minDistance(dist, sptSet);
  66.  
  67. sptSet[u] = true;
  68.  
  69. for (int v = 0; v < V; v++)
  70.  
  71. if (!sptSet[v] && graph[u][v]!=0 &&
  72. dist[u] != Integer.MAX_VALUE &&
  73. dist[u]+graph[u][v] < dist[v])
  74. dist[v] = dist[u] + graph[u][v];
  75. }
  76.  
  77. //printSolution(dist, V);
  78. return dist;
  79. }
  80.  
  81. public static void main (String[] args)
  82. {
  83.  
  84. int[][] matrice = new int[dim][dim];
  85.  
  86.  
  87. for(int i =0; i < dim; i++) {
  88. for(int j=0; j<dim; j++) {
  89. if(i==j) matrice[i][j]=0;
  90. else {
  91. if(Math.abs(i-j)==1)
  92. if(i%N==0 && j==i-1) matrice[i][j]=0;
  93. else if(j%N==0 && i==j-1) matrice[i][j]=0;
  94. else matrice[i][j]=1;
  95. else if(Math.abs(i-j)==N) matrice[i][j]=1;
  96. else matrice[i][j]=0;
  97. }
  98. }
  99. }
  100.  
  101. for (int i = 0; i < matrice.length; i++) {
  102. for (int j = 0; j < matrice[i].length; j++) {
  103. System.out.print(matrice[i][j] + "," + " ");
  104. }
  105. System.out.println();
  106. }
  107.  
  108. System.out.println("--------------------------------------");
  109.  
  110. //int[] riga= new int[dim];
  111. int[][] fire= new int[dim][dim];
  112. ShortestPath t = new ShortestPath();
  113. for(int i=0; i<dim; i++) {
  114. fire[i]= t.dijkstra(matrice, i);
  115.  
  116. }
  117.  
  118. for (int i = 0; i < fire.length; i++) {
  119. for (int j = 0; j < fire[i].length; j++) {
  120. System.out.print(fire[i][j] + "," + " ");
  121. }
  122. System.out.println();
  123. }
  124. System.out.println("--------------------------------------");
  125. propagazione(fire,10);
  126.  
  127. }
  128. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement