哪有问题?就过不了hack
查看原帖
哪有问题?就过不了hack
536337
eb0ycn楼主2024/5/20 21:54
#include<bits/stdc++.h>
using namespace std;
const int dx[4]={1,0,-1,0},dy[4]={0,1,0,-1};
int n,m,l=-1,r=-1,qx[4000000],qy[4000000],sx,sy,x,y,nx,ny,dis[2001][2001];
long long aa[2001][2001],qs[4000000],s;
bool vis[2001][2001];
int main(){
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;++i)for(int j=1;j<=m;++j)scanf("%lld",&aa[i][j]);
	scanf("%d%d",&sx,&sy),qx[++r]=sx,qy[r]=sy,qs[r]=aa[sx][sy],dis[sx][sy]=0,vis[sx][sy]=1;
	while(l<r){
		x=qx[++l],y=qy[l],s=qs[l];
		if(s==1)return 0&printf("%d",dis[x][y]);
		for(int i=0;i<4;++i){
			nx=x+dx[i],ny=y+dy[i];
			if(nx>=1&&nx<=n&&ny>=1&&ny<=m&&!vis[nx][ny]){
				qx[++r]=nx,qy[r]=ny,qs[r]=__gcd(s,aa[nx][ny]),dis[nx][ny]=dis[x][y]+1,vis[nx][ny]=1;
			}
		}
	}
	return 0&printf("-1");
}
2024/5/20 21:54
加载中...