记录编号 568699 评测结果 AAAAAAAAAA
题目名称 [USACO21Feb Silver]舒适的牛 最终得分 100
用户昵称 Gravatar瑆の時間~無盡輪迴·林蔭 是否通过 通过
代码语言 C++ 运行时间 1.163 s
提交时间 2022-01-26 00:25:59 内存使用 0.00 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<queue>
#include<cstring>
using namespace std;
int change(int x)
{
	return x+1000;
}
int mp[3100][3100],n,a,b,cnt=0;
struct PE
{
	int x,y;
};
PE sd;
queue<PE> q;
int main()
{
	freopen("comfort.in","r",stdin);
	freopen("comfort.out","w",stdout);
	memset(mp,0,sizeof(mp));
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>a>>b;
		a=change(a);
		b=change(b);
		if(mp[a][b]==2)
		{
			cnt--;
			mp[a][b]=1;
			cout<<cnt<<endl;
			continue;
		}
		mp[a][b]=1;
		sd.x=a;
		sd.y=b;
		q.push(sd);
		if(mp[a-1][b]!=0)
		{
			sd.x=a-1;
			sd.y=b;
			q.push(sd);
		}
		if(mp[a+1][b]!=0)
		{
			sd.x=a+1;
			sd.y=b;
			q.push(sd);
		}
		if(mp[a][b-1]!=0)
		{
			sd.x=a;
			sd.y=b-1;
			q.push(sd);
		}
		if(mp[a][b+1]!=0)
		{
			sd.x=a;
			sd.y=b+1;
			q.push(sd);
		}
		while(!q.empty())
		{
			int et=0,tx,ty,ex,ey;
			tx=q.front().x;
			ty=q.front().y;
			q.pop();
			if(mp[tx][ty-1]==0)
			{
				et++;
				ex=tx;
				ey=ty-1;
			}
			if(mp[tx][ty+1]==0)
			{
				et++;
				ex=tx;
				ey=ty+1;
			}
			if(mp[tx-1][ty]==0)
			{
				et++;
				ex=tx-1;
				ey=ty;
			}
			if(mp[tx+1][ty]==0)
			{
				et++;
				ex=tx+1;
				ey=ty;
			}
			//cout<<tx<<' '<<ty<<' '<<et<<endl;
			if(et==1)
			{
				cnt++;
				mp[ex][ey]=2;
				sd.x=ex;
				sd.y=ey;
				q.push(sd);
				if(mp[ex-1][ey]!=0)
				{
					sd.x=ex-1;
					sd.y=ey;
					q.push(sd);
				}
				if(mp[ex+1][ey]!=0)
				{
					sd.x=ex+1;
					sd.y=ey;
					q.push(sd);
				}
				if(mp[ex][ey-1]!=0)
				{
					sd.x=ex;
					sd.y=ey-1;
					q.push(sd);
				}
				if(mp[ex][ey+1]!=0)
				{
					sd.x=ex;
					sd.y=ey+1;
					q.push(sd);
				}
				//cout<<"s";
			}
		}
		cout<<cnt<<endl;
	}
	return 0;
}