Advertisement
vov44k

Волновая трассировка

Feb 28th, 2022
414
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.48 KB | None | 0 0
  1. import java.util.Scanner;
  2.  
  3. public class Main {
  4.  
  5.     public static void main(String[] args) {
  6.         Scanner in = new Scanner(System.in);
  7.         int n = in.nextInt();
  8.         int m = in.nextInt();
  9.         int[][] a = new int[n + 2][m + 2];
  10.         for (int i = 0; i < n + 2; i++) {
  11.             a[i][0] = -1;
  12.             a[i][m + 1] = -1;
  13.         }
  14.         for (int i = 0; i < m + 2; i++) {
  15.             a[0][i] = -1;
  16.             a[n + 1][i] = -1;
  17.         }
  18.         for (int i = 1; i < n + 1; i++) {
  19.             for (int j = 1; j < m + 1; j++) {
  20.                 a[i][j] = in.nextInt();
  21.             }
  22.         }
  23.         boolean f = false;
  24.         int k = 1;
  25.         if (a[1][1] == 0) {
  26.             a[1][1] = k;
  27.             while (n * m >= k) {
  28.                 for (int i = 1; i < n + 1; i++) {
  29.                     for (int j = 1; j < m + 1; j++) {
  30.                         if (a[i][j] == k) {
  31.                             if (i == n && j == m) f = true;
  32.                             if (a[i][j - 1] == 0) a[i][j - 1] = k + 1;
  33.                             if (a[i + 1][j] == 0) a[i + 1][j] = k + 1;
  34.                             if (a[i][j + 1] == 0) a[i][j + 1] = k + 1;
  35.                             if (a[i - 1][j] == 0) a[i - 1][j] = k + 1;
  36.                         }
  37.                     }
  38.                 }
  39.                 if (f) break;
  40.                 k++;
  41.  
  42.             }
  43.         }
  44.         if (f) System.out.println(k - 1);
  45.         else System.out.println(-1);
  46.     }
  47.  
  48. }
  49.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement