求助了啊,懵了
查看原帖
求助了啊,懵了
551430
__O__o__楼主2022/12/10 11:06
#include<iostream> 
#include<cstdio>
using namespace std;
int f[1100][1100];
long long ans=0;
int n,m,k,x,y;
bool Node_Edge(int x,int y)
{
	if(x<1||x>n||y<1||y>n) return 0;
	return 1;
}
void Node1(int x,int y)
{
	for(int i=x-2;i<=x+2;i++) if(Node_Edge(i,y))f[i][y]=1;
	for(int i=y-2;i<=y+2;i++) if(Node_Edge(x,i))f[x][i]=1;
	if(Node_Edge(x-1,y-1))f[x-1][y-1]=1;
	if(Node_Edge(x+1,y-1))f[x+1][y-1]=1;
	if(Node_Edge(x-1,y+1))f[x-1][y+1]=1;
	if(Node_Edge(x+1,y+1))f[x+1][y+1]=1;
//	for(int i=1;i<=n;i++)
//	{
//		for(int j=1;j<=n;j++) cout<<f[i][j];
//		cout<<endl;
//	}
	    
}
void Node2(int x,int y)
{
	int x1=x-2;
	int y1=y-2;
	for(int i=x1;i<=x1+5;i++)
	    for(int j=y1;j<=y1+5;j++) if(Node_Edge(i,j)) f[i][j]=1;
//	for(int i=1;i<=n;i++)
//	{
//		for(int j=1;j<=n;j++) cout<<f[i][j];
//		cout<<endl;
//	}
}
void Edge()
{
	for(int i=1;i<=n;i++)
	    for(int j=1;j<=n;j++)
	        if(f[i][j]==0) ans++;
}
int main()
{
	scanf("%d%d%d",&n,&m,&k);
	for(int i=1;i<=m;i++)
	{
		scanf("%d%d",&x,&y);
		Node1(x,y);
	}
	for(int i=1;i<=k;i++)
	{
		scanf("%d%d",&x,&y);
		Node2(x,y);
	}
	Edge();
	cout<<ans;
	return 0;
}
2022/12/10 11:06
加载中...