求助QAQ
  • 板块灌水区
  • 楼主封禁用户
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/7/25 22:18
  • 上次更新2024/7/26 08:28:20
查看原帖
求助QAQ
1392847
封禁用户楼主2024/7/25 22:18

P2802

代码如下QAQ

#include<bits/stdc++.h>
using namespace std;
int n,m;
int a[11][11];
int dx[]={0,1,0,-1};
int dy[]={-1,0,1,0};
struct node{
	int x,y,xue,step;
}qu[90];
int BFs(int x0,int y0){
    qu[0].x=x0;
    qu[0].y=y0;
    qu[0].xue=6;
    qu[0].step=0;
    a[x0][y0]=0;
    int head=0,tail=1;
    while(head<tail){
    	int x=qu[head].x;
    	int y=qu[head].y;
    	int X=qu[head].xue;
    	int s=qu[head++].step;
    	for(int i=0; i<4; i++){
    		int nx=x+dx[i];
    		int ny=y+dy[i];
    		if(nx>0 && nx<=n && ny>0 && ny<=m)
    		{
    			if(a[nx][ny]==1 || a[nx][ny]==3 || a[nx][ny]==4)
    			{
    			    if(a[nx][ny]==3 && X>1)
    			       return s+1;
    			    if(a[nx][ny]==3 && X<=1)
    			       return -1;
    			    if(a[nx][ny]==4)
    			       X=6;
    			   qu[tail].step=s+1;
    			   qu[tail].xue=X-1;
				   qu[tail].x=nx;
				   qu[tail++].y=ny;
				   a[nx][ny]=0;
				}	
			}
		}
	}
	return -1;
}
int main(){
	int x=0,y=0;
    cin>>n>>m;
    for(int i=1; i<=n; i++)
        for(int j=1; j<=m; j++)
        {
            cin>>a[i][j];
            if(a[i][j]==2)
            {
               x=i;
               y=j;
			}
        }
    cout<<BFs(x,y);
    return 0;
}
2024/7/25 22:18
加载中...