Advertisement
SergeyPGUTI

11.3.1

May 27th, 2016
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.22 KB | None | 0 0
  1. import java.util.Scanner;
  2. import java.io.PrintWriter;
  3.  
  4. import static javafx.scene.input.KeyCode.V;
  5.  
  6. /**
  7.  * Created by Сергей on 27.05.2016.
  8.  */
  9. public class Solution321 {
  10.     public static void main(String Args[]){
  11.         Scanner sc=new Scanner(System.in);
  12.         PrintWriter printWriter = new PrintWriter(System.out);
  13.         int vCount=sc.nextInt();
  14.         // Граф будем хранить в матрице смежности
  15.         int[][] D = new int[vCount][vCount];
  16.         for (int i = 0; i < vCount; i++) {
  17.             for (int j = 0; j < vCount; j++) {
  18.                 // Считываем вес ребра между ве
  19.                 // ршинами
  20.                 // i и j соответственно
  21.                 D[i][j] = sc.nextInt();
  22.                 if (D[i][j]==-1) D[i][j]=9999999;
  23.             }
  24.         }
  25.  
  26.         for (int i=0; i<vCount; i++) D[i][i]=0;
  27.  
  28.         // Согласно алгоритму будем обновлять
  29.         // ответ для каждой пары вершин i и j,
  30.         // перебирая промежуточную вершину k
  31.         for (int k=0; k<vCount; k++)
  32.             for (int i=0; i<vCount; i++)
  33.                 for (int j=0; j<vCount; j++)
  34.                     if (D[i][k]>0 && D[k][j]>0 && i!=j)
  35.                         if (D[i][k]+D[k][j]<D[i][j] || D[i][j]==0)
  36.                             D[i][j]=D[i][k]+D[k][j];
  37.  
  38.         for (int i = 0; i < vCount; i++) {
  39.             for (int j = 0; j < vCount; j++){
  40.                 if (D[i][j]==9999999) D[i][j]=0;
  41.             }
  42.         }
  43.         for (int i = 0; i < vCount; i++) {
  44.             for (int j = 0; j < vCount; j++) {
  45.                     printWriter.print(D[i][j] + " ");
  46.             }
  47.             printWriter.println();
  48.         }
  49.          int max=0;
  50.         for (int i = 0; i < vCount; i++) {
  51.             for (int j = 0; j < vCount; j++) {
  52.                 if (max < D[i][j]) max = D[i][j];
  53.             }
  54.         }
  55.         printWriter.println(max);
  56.  
  57.         // После выполнения программы необходимо закрыть
  58.         // потоки ввода и вывода
  59.         sc.close();
  60.         printWriter.close();
  61.     }
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement