POJ3620

来源:互联网 发布:sketch有windows版吗 编辑:程序博客网 时间:2024/05/16 11:43

题目:http://acm.pku.edu.cn/JudgeOnline/problem?id=3620

思路:深度搜索,搜索过的点去掉(所有点只搜索一次)

 

  1. import java.util.Scanner;
  2. public class Main {
  3.     int n;
  4.     int m;
  5.     int k;
  6.     boolean[][] cells;
  7.     int max;
  8.     int t;
  9.     public Main() {
  10.         Scanner scan = new Scanner(System.in);
  11.         n = scan.nextInt();
  12.         m = scan.nextInt();
  13.         k = scan.nextInt();
  14.         cells = new boolean[n][m];
  15.         for (int i = 0; i < k; i++) {
  16.             cells[scan.nextInt() - 1][scan.nextInt() - 1] = true;
  17.         }
  18.         for (int i = 0; i < n; i++) {
  19.             for (int j = 0; j < m; j++) {
  20.                 if (cells[i][j]) {
  21.                     t = 0;
  22.                     search(i, j);
  23.                     if (t > max) {
  24.                         max = t;
  25.                     }
  26.                 }
  27.             }
  28.         }
  29.         System.out.println(max);
  30.     }
  31.     public void search(int i, int j) {
  32.         if (!cells[i][j]) {
  33.             return;
  34.         } else {
  35.             t++;
  36.             cells[i][j] = false;
  37.             if (j - 1 >= 0) {
  38.                 search(i, j - 1);
  39.             }
  40.             if (j + 1 < m) {
  41.                 search(i, j + 1);
  42.             }
  43.             if (i - 1 >= 0) {
  44.                 search(i - 1, j);
  45.             }
  46.             if (i + 1 < n) {
  47.                 search(i + 1, j);
  48.             }
  49.         }
  50.     }
  51.     public static void main(String[] args) {
  52.         new Main();
  53.     }
  54. }
原创粉丝点击