Lang:G++
Edit123456789101112131415161718192021222324252627282930#include <bits/stdc++.h>using namespace std;const int maxn = 100 + 10;int a[maxn][maxn],vis[maxn][maxn],n,m;int dx[] = {-1,0,1,0};int dy[] = {0,1,0,-1};int dfs(int x,int y){vis[x][y] = 1;int ans = 0;for( int i = 0; i < 4; i++ ){int nx = x + dx[i],ny = y + dy[i];if(nx < 1 || nx > n || ny < 1 || ny > m)ans++;else if(!vis[nx][ny]){if(a[nx][ny] == a[x][y])ans += dfs(nx,ny);else ans++;}}return ans;}int main(){int x,y;while(~scanf("%d%d%d%d",&n,&m,&x,&y)){for( int i = 1; i <= n; i++ )for( int j = 1; j <= m; j++ )scanf("%d",&a[i][j]);printf("%d\n",dfs(x+1,y+1));}return 0;}