题意:有一个n*m大的农场,其中每一方格不是干旱就是潮湿,现在给出k个潮湿的方格信息(即每个潮湿方格的坐标),如果每个方格与其四连通的其中一个方格连通则构成一个湖泊,该湖泊所包含的方格数就是该湖泊的大小,现在要求构成的湖泊中最大的那个湖泊所包含的方格数。
输入:
3 4 53 22 23 12 31 1 输出: 4
代码:
#include#include using namespace std;#define MAX 101int n, m, k, num, G[MAX][MAX], f[MAX][MAX];int dir[4][2] = { { 1, 0}, {-1, 0}, { 0, 1}, { 0, -1}};int dfs(int p, int q){ f[p][q] = 1; for (int i = 0; i < 4; i++) { int x = p + dir[i][0]; int y = q + dir[i][1]; if (!f[x][y] && G[x][y]) { num++; dfs(x, y); } } return num;}int main(){ while (cin>>n>>m>>k) { int ans = 0; memset(f, 0, sizeof(f)); memset(G, 0, sizeof(G)); while (k--) { int x, y; cin>>x>>y; G[x][y] = 1; } for (int i = 1; i <= n; i++) for (int j = 1; j <= m; j++) { if (!f[i][j] && G[i][j]) { num = 1; ans = max(ans, dfs(i, j)); } } cout< <