玄关 WA on #2
查看原帖
玄关 WA on #2
785704
jiawenbo楼主2024/8/27 14:47
#include <bits/stdc++.h>
using namespace std;
#define ll long long
string A[11];
ll n,sx,sy,fx,fy;
ll minn = LONG_LONG_MAX;
ll book[11][11][11][11];
bool f = false;
void dfs(ll x_1,ll y_1,ll x_2,ll y_2,ll step)
{
	// printf("%lld %lld %lld %lld %lld\n",x_1,y_1,x_2,y_2,step);
	if (x_1 < 1 || x_1 > n || y_1 < 1 || y_1 > n) return ;
	if (x_2 < 1 || x_2 > n || y_2 < 1 || y_2 > n) return ;
	if (A[x_1][y_1] == '1' || A[x_2][y_2] == '1') return ;
	if (book[x_1][y_1][x_2][y_2]) return ;
	book[x_1][y_1][x_2][y_2] = 1;
	if (x_1 == x_2 && y_1 == y_2)
	{
		minn = min(minn,step);
		f = 1;
		return ;
	}
	for (ll xx = -1; xx <= 1; xx ++)
	{
		for (ll yy = -1; yy <= 1; yy ++)
		{
			for (ll xx1 = -1; xx1 <= 1; xx1 ++)
			{
				for (ll yy1 = -1; yy1 <= 1; yy1 ++)
				{
					for (ll xx2 = -1; xx2 <= 1; xx2 ++)
					{
						for (ll yy2 = -1; yy2 <= 1; yy2 ++)
						{
							if ((xx != yy && xx != 0 && yy != 0) || (xx1 != yy1 && xx1 != 0 && yy1 != 0) || (xx2 != yy2 && xx2 != 0 && yy2 != 0)) 
								if (x_2 + xx1 >= 1 && x_2 + xx1 <= n && y_2 + yy1 >= 1 && y_2 + yy1 <= n) dfs(x_1 + xx,y_1 + yy,x_2 + xx1 + xx2,y_2 + yy1 + yy2,step + 1);
						}
					}
				}
			}
		}
	}
	return ;
}
int main()
{
	scanf("%lld%lld%lld%lld%lld",&n,&sx,&sy,&fx,&fy);
	for (ll i = 1; i <= n; i ++) cin>>A[i],A[i] = ' ' + A[i];
	dfs(sx,sy,fx,fy,0);
	if (f) printf("%lld",minn);
	else printf("inf");
	return 0;
}

若回复请at一下我awa

2024/8/27 14:47
加载中...