思路:
直接暴力加入判断
c o d e code code
#include<iostream>
#include<cstdio>
using namespace std;
int n;
int ans;
int a[3000][3000];
int dx[5]={0, 1, 0, -1, 0};
int dy[5]={0, 0, -1, 0, 1};
void dfs(int x, int y)
{
if(!a[x][y])
return;
int flag=0, tx, ty;
for(int i=1; i<=4; i++)
if(a[x+dx[i]][y+dy[i]])
flag++;
else tx=x+dx[i], ty=y+dy[i];
if(flag!=3)
return;
else
{
ans++;
a[tx][ty]=1;
for(int i=0; i<=4; i++)
dfs(tx+dx[i], ty+dy[i]);
}
}
int main()
{
scanf("%d", &n);
while(n--)
{
int x, y;
scanf("%d%d", &x, &y);
x+=1000, y+=1000;
if(a[x][y])
ans--;
a[x][y]=1;
for(int i=0; i<=4; i++)
dfs(x+dx[i], y+dy[i]);
printf("%d\n", ans);
}
return 0;
}