#1WA,大佬求助
  • 板块P2802 回家
  • 楼主345678910jpk
  • 当前回复3
  • 已保存回复3
  • 发布时间2022/11/29 19:22
  • 上次更新2023/10/27 00:59:23
查看原帖
#1WA,大佬求助
772478
345678910jpk楼主2022/11/29 19:22
#include<bits/stdc++.h>
using namespace std;
int n,m,a[91][91],cx,cy,jx,jy,sum=0xffff,ti;
int c[5][2]={{0,1},{1,0},{0,-1},{-1,0}};
bool g;
int o=-1;
int bu,b[81][81];
void dfs(int x,int y,int s){
	if(s==0||ti>=sum||ti>bu)
	return;
	if(a[x][y]==4)
		s=6;
	if(x==jx&&y==jy&&ti<sum)
	{
		sum=ti;
		return;
	}
	for(int i=0;i<4;i++)
	{
		int q=x+c[i][0];
		int w=y+c[i][1];
		if(q<1||q>n||w>m||w<1||a[q][w]==0||s-1<=b[q][w])
		continue;
		ti++;
		b[q][w]=s-1;
		dfs(q,w,s-1);
		ti--;
	}
}
int main(){
	scanf("%d%d",&n,&m);
	bu=n*m;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			scanf("%d",&a[i][j]);
			if(a[i][j]==2)
			cx=i,cy=j;
			if(a[i][j]==3)
			jx=i,jy=j;
		}
}
	b[cx][cy]=6;
	dfs(cx,cy,6);
	if(sum==0xffff)		
	printf("%d",o);
	else
	printf("%d",sum);
	return 0;
}
2022/11/29 19:22
加载中...