记录编号 569269 评测结果 AAAAAAAAAA
题目名称 [USACO Nov07] 最大的湖 最终得分 100
用户昵称 Gravatarlihaoze 是否通过 通过
代码语言 C++ 运行时间 0.000 s
提交时间 2022-02-28 19:32:12 内存使用 0.00 MiB
显示代码纯文本
  1. #include <iostream>
  2. #include <cstring>
  3. #include <algorithm>
  4.  
  5. using namespace std;
  6.  
  7. const int N = 110;
  8. bool g[N][N];
  9. int cnt[N*N];
  10. int n, m, k, idx;
  11. int maxn;
  12. int dx[] = {0, 1, 0, -1}, dy[] = {1, 0, -1, 0};
  13.  
  14. inline bool is_valid(int x, int y) { return x>=1 && y>=1 && x<=n && y<=m; }
  15.  
  16. void dfs(int x, int y, int id) {
  17. if(!is_valid(x, y) || !g[x][y]) return;
  18. g[x][y] = false;
  19. cnt[id]++;
  20. maxn = max(maxn, cnt[id]);
  21. for(register int i = 0; i<4; ++i) dfs(x+dx[i], y+dy[i], id);
  22. }
  23.  
  24. int main() {
  25. freopen("lake.in", "r", stdin);
  26. freopen("lake.out", "w", stdout);
  27. ios::sync_with_stdio(false), cin.tie(0);
  28. cin >> n >> m >> k;
  29. for(register int i = 1; i<=k; ++i) {
  30. int x, y;
  31. cin >> x >> y;
  32. g[x][y] = true;
  33. }
  34. for(register int i = 1; i<=n; ++i)
  35. for(register int j = 1; j<=m; ++j)
  36. if(g[i][j]) dfs(i, j, ++idx);
  37. cout << maxn << '\n';
  38. return 0;
  39. }