样例没过求助qwq

P2802 回家

```cpp #include<bits/stdc++.h> using namespace std; struct node{ int x,y,step,blood; }; short n,m,mp[10][10],dx[5]={0,1,-1,0,0},dy[5]={0,0,0,-1,1},vis[10][10]; node s,t; queue<node> q; void bfs(){ s.step=0; s.blood=6; vis[s.x][s.y]=6; q.push(s); while(!q.empty()) { node tmp=q.front(); q.pop(); if(tmp.blood==1)continue; for(int i=1;i<=4;i++) { node a; a.x=tmp.x+dx[i]; a.y=tmp.y+dy[i]; if(a.x>=1&&a.x<=n&&a.y>=1&&a.y<=m&&mp[a.x][a.y]!=0) { a.step=tmp.step+1; a.blood=tmp.blood-1; if(vis[a.x][a.y]>=a.blood)continue; vis[a.x][a.y]=a.blood; if(a.x==t.x&&a.y==t.y) { cout<<a.step; return; } if(mp[a.x][a.y]==4)a.blood=6; q.push(a); } } } cout<<-1; } int main(){ cin>>n>>m; for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { cin>>mp[i][j]; if(mp[i][j]==2) { s.x=i; s.y=j; } else if(mp[i][j]==3) { t.x=i; t.y=j; } } } bfs(); return 0; } ```
by zhouxianzhuo @ 2023-11-12 11:20:29


|