1 条题解

  • 0
    @ 2026-10-25 16:05:38

    思路

    至200x200网格单位时间最短路,不可达输出oop!。

    参考程序(C++11)

    #include <bits/stdc++.h>
    using namespace std;
    int main(){int t;cin>>t;while(t--){int r,c;cin>>r>>c;vector<string>a(r);queue<pair<int,int>>q;vector<vector<int>>d(r,vector<int>(c,-1));for(int i=0;i<r;i++){cin>>a[i];for(int j=0;j<c;j++)if(a[i][j]=='S'){q.push({i,j});d[i][j]=0;}}int ans=-1,dx[]={1,-1,0,0},dy[]={0,0,1,-1};while(!q.empty()){auto p=q.front();q.pop();if(a[p.first][p.second]=='E'){ans=d[p.first][p.second];break;}for(int k=0;k<4;k++){int x=p.first+dx[k],y=p.second+dy[k];if(x>=0&&x<r&&y>=0&&y<c&&a[x][y]!='#'&&d[x][y]<0){d[x][y]=d[p.first][p.second]+1;q.push({x,y});}}}if(ans<0)cout<<"oop!\n";else cout<<ans<<'\n';}}
    
    • 1

    信息

    ID
    1149
    时间
    1000ms
    内存
    64MiB
    难度
    普及−
    标签
    递交数
    1
    已通过
    1
    上传者