求助!
查看原帖
求助!
448018
KAqwq楼主2021/12/26 14:32

事情是这样的:我做这道题 样例过了 全WA 我下了第一个测试点

输入

10 10
6 6

输出

5
3

我样例过了也不给分 帮忙看一下

代码

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int MAXN=1e4;
ll n,m,dx[13]={1,1,2,2,2,2,-1,-1,-2,-2,-2,-2},dy[13]={-2,2,-2,-1,1,2,-2,2,-1,1,-2,2},ccf,tot,ans;
bool vis[MAXN][MAXN];
queue<int>q;
void bfs(ll N,ll M){
	while(!q.empty()) q.pop();
	q.push(N);
	q.push(M);
	q.push(0);
	vis[N][M]=0;
	while(!q.empty()){
		ccf=q.front(),q.pop();
		tot=q.front(),q.pop();
		ans=q.front(),q.pop();
		for(ll i=0;i<12;i++){
			ll xx=ccf+dx[i],yy=tot+dy[i];
			if(xx>=1&&xx<=n&&yy>=1&&yy<=m&&!vis[xx][yy]){
				q.push(xx);
                q.push(yy); 
                q.push(ans+1);
                vis[xx][yy]=1;
                if(xx==1&&yy==1){
                	printf("%lld",ans+1);
                	return;
				}
			}
		}
	}
	return;
}
int main(){
	scanf("%lld%lld",&n,&m);
	bfs(n,m);	
	memset(vis,0,sizeof(vis));
	scanf("%lld%lld",&n,&m);
	bfs(n,m);
	return 0;
}
2021/12/26 14:32
加载中...