记录编号 |
569269 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[USACO Nov07] 最大的湖 |
最终得分 |
100 |
用户昵称 |
lihaoze |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.000 s |
提交时间 |
2022-02-28 19:32:12 |
内存使用 |
0.00 MiB |
显示代码纯文本
- #include <iostream>
- #include <cstring>
- #include <algorithm>
-
- using namespace std;
-
- const int N = 110;
- bool g[N][N];
- int cnt[N*N];
- int n, m, k, idx;
- int maxn;
- int dx[] = {0, 1, 0, -1}, dy[] = {1, 0, -1, 0};
-
- inline bool is_valid(int x, int y) { return x>=1 && y>=1 && x<=n && y<=m; }
-
- void dfs(int x, int y, int id) {
- if(!is_valid(x, y) || !g[x][y]) return;
- g[x][y] = false;
- cnt[id]++;
- maxn = max(maxn, cnt[id]);
- for(register int i = 0; i<4; ++i) dfs(x+dx[i], y+dy[i], id);
- }
-
- int main() {
- freopen("lake.in", "r", stdin);
- freopen("lake.out", "w", stdout);
- ios::sync_with_stdio(false), cin.tie(0);
- cin >> n >> m >> k;
- for(register int i = 1; i<=k; ++i) {
- int x, y;
- cin >> x >> y;
- g[x][y] = true;
- }
- for(register int i = 1; i<=n; ++i)
- for(register int j = 1; j<=m; ++j)
- if(g[i][j]) dfs(i, j, ++idx);
- cout << maxn << '\n';
- return 0;
- }