40分求助
查看原帖
40分求助
419144
chenjunxiu楼主2021/7/3 17:13
#include<bits/stdc++.h>
#define xu1(i,a,b) for(i=(a);i<=(b);i++)
#define xu2(i,a,b) for(i=(a);i<(b);i++)
#define mes(a,b) memset(a,b,sizeof(a))
#define mec(a,b) memcpy(a,b,sizeof(a))
#define frr(s) freopen(s,"r",stdin)
#define frw(s) freopen(s,"w",stdout)
#define ret(x) return(x);
#define AZ(a) (a)>='A'&&(a)<='Z'
#define az(a) (a)>='a'&&(a)<='z'
#define SZ(a) (a)>='0'&&(a)<='9'
#define anh(a,x,y) (a)>=(x)&&(a)<=(y)
#define orh(a,x,y) (a)>=(x)||(a)<=(y)
#define tisu ios::sync_with_stdio(false)
#define ll long long
#define ull unsigned long long
using namespace std;
const int N=110;
int n,m,sx,sy,ex,ey,v[N][N][4];
int fx[4]={1,-1,0,0};
int fy[4]={0,0,1,-1};
bool p[N][N];
struct asdf{
	int x,y,t,lt,f;
}e,w;
queue<asdf>q;
int main()
{
    cin>>n>>m;
    cin>>sx>>sy>>ex>>ey;
    for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
			cin>>p[i][j];
	for(int k=1;k<=10;k++)
	{
		for(int i=1;i<=n;i++)
			for(int j=1;j<=m;j++)
				for(int o=0;o<4;o++)
					v[i][j][o]=0;
		while(q.size())
			q.pop();
		e.x=sx;e.y=sy;
		e.t=0;e.lt=0;e.f=0;
		int tt=1;
		q.push(e);
		e.f++;q.push(e);
		e.f++;q.push(e);
		e.f++;q.push(e);
		v[e.x][e.y][0]=tt;
		v[e.x][e.y][1]=tt;
		v[e.x][e.y][2]=tt;
		v[e.x][e.y][3]=tt;
		while(!q.empty())
		{
			e=q.front();
			q.pop();
			if(e.x==ex&&e.y==ey)
			{
				cout<<k<<" "<<e.t<<endl;
				break;
			}
			for(int i=0;i<4;i++)
			{
				w=e;
				if(e.x+fx[i]>0&&e.x+fx[i]<=n&&e.y+fy[i]>0&&e.y+fy[i]<=m&&p[e.x+fx[i]][e.y+fy[i]])
					if(e.f==i)
					{
						w.lt++;
						w.t++;
						w.x+=fx[i];
						w.y+=fy[i];
						if(!v[w.x][w.y][i])
						{
							v[w.x][w.y][i]=1;
							q.push(w);
						}
					}
					else if(w.lt>=k)
					{
						w.lt=1;
						w.t++;
						w.x+=fx[i];
						w.y+=fy[i];
						w.f=i;
						if(!v[w.x][w.y][i])
						{
							v[w.x][w.y][i]=1;
							q.push(w);
						}
					}
			}
		}
	}
	return 0;
}

RT

#3,4,5,6,8,9,WA

2021/7/3 17:13
加载中...