86分捞
查看原帖
86分捞
1199534
ycy1124楼主2024/4/22 12:54

# 6 # 7 wa

#include<bits/stdc++.h>
using namespace std;
int n,m,js=0;
struct Node{
	queue<int>x,y;
	bool bj=0,pd=0;
}a[101][101];
int p1[4]={1,-1,0,0},p2[4]={0,0,-1,1};
queue<int>xx,yy;
void bfs(int x1,int y1)
{
	a[x1][y1].bj=1;
	while(!a[x1][y1].x.empty())
	{
		a[a[x1][y1].x.front()][a[x1][y1].y.front()].pd=1;
		for(int i=1;i<=3;i++)
		{
			if(!a[a[x1][y1].x.front()][a[x1][y1].y.front()].bj&&a[a[x1][y1].x.front()+p1[i]][a[x1][y1].y.front()+p2[i]].bj&&a[x1][y1].x.front()+p1[i]>=1&&a[x1][y1].x.front()+p1[i]<=n&&a[x1][y1].y.front()+p2[i]>=1&&a[x1][y1].y.front()+p2[i]<=n)
			{
				xx.push(a[x1][y1].x.front());
				yy.push(a[x1][y1].y.front());
				a[a[x1][y1].x.front()][a[x1][y1].y.front()].bj=1;
			}
		}
		a[x1][y1].x.pop();
		a[x1][y1].y.pop();
	}
	for(int i=0;i<=3;i++)
	{
		if(!a[x1+p1[i]][y1+p2[i]].bj&&x1+p1[i]>=1&&x1+p1[i]<=n&&y1+p2[i]>=1&&y1+p2[i]<=n&&a[x1+p1[i]][y1+p2[i]].pd)
		{
			a[x1+p1[i]][y1+p2[i]].bj=1;
			xx.push(x1+p1[i]);
			yy.push(y1+p2[i]);
		}
	}
}
void read(int &x)
{
	int f=1;
	x=0;
	char ch=getchar();
	while((ch>'9'||ch<'0')&&ch!='-')
	{
		ch=getchar();
	}
	if(ch=='-')
	{
		f=-1;
		ch=getchar();
	}
	while(ch>='0'&&ch<='9')
	{
		x*=10;
		x+=ch-'0';
		ch=getchar();
	}
	x*=f;
}
int main()
{
	read(n);
	read(m);
	for(int i=1;i<=m;i++)
	{
		int x1,y1,x2,y2;
		read(x1);
		read(y1);
		read(x2);
		read(y2);
		a[x1][y1].x.push(x2);
		a[x1][y1].y.push(y2);
	}
	a[1][1].bj=0;
	a[1][1].pd=1;
	xx.push(1);
	yy.push(1);
	while(!xx.empty())
	{
		bfs(xx.front(),yy.front());
		xx.pop();
		yy.pop();
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
		{
			if(a[i][j].pd)
			{
				js++;
			}
		}
	}
	cout<<js;
	return 0;
}

┭┮﹏┭┮

2024/4/22 12:54
加载中...