90pts求调
查看原帖
90pts求调
550190
zhuguyu楼主2024/7/2 23:12

WA了第四个点,不知道为啥

#include<bits/stdc++.h>
using namespace std;
struct p{
	int x,y,step,flag;
}q[1000001];
int n,m,f=1,t=1;
int a[1001][1001];
int dx[8]={1,1,1,-1,-1,-1,0,0};
int dy[8]={1,0,-1,0,1,-1,1,-1};
bool used[1001][1001];
int main(){
	cin>>m>>n;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cin>>a[i][j];
		}
	}
	q[1].x=q[1].y=1,q[1].step=0,q[1].flag=-1;
	used[1][1]=1;
	while(f<=t){
		p u=q[f++],v;
		for(int i=0;i<8;i++){
			v.x=u.x+a[u.x][u.y]*dx[i];
			v.y=u.y+a[u.x][u.y]*dy[i];
			v.step=u.step+1;
			v.flag=i;
			if(i==u.flag) continue;
			if(v.x<1||v.y<1||v.x>n||v.y>m) continue;
			if(used[v.x][v.y]) continue;
			if(v.x==n&&v.y==m){
				cout<<v.step;
				return 0;
			}
			q[++t]=v;
			used[v.x][v.y]=1;
		}
	}
	cout<<"NEVER";
	return 0;
}
2024/7/2 23:12
加载中...