zoukankan      html  css  js  c++  java
  • bzoj1644 / P1649 [USACO07OCT]障碍路线Obstacle Course

    P1649 [USACO07OCT]障碍路线Obstacle Course

    bfs

    直接上个bfs

    注意luogu的题目和bzoj有不同(bzoj保证有解,还有输入格式不同)。

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<queue>
     5 using namespace std;
     6 #define pi pair<int,int>
     7 #define mkp make_pair
     8 #define N 105
     9 const int d1[4]={0,1,0,-1};
    10 const int d2[4]={1,0,-1,0};
    11 char q[3]; bool dan[N][N];
    12 int a[N][N],vis[N][N],n;
    13 pi S,T; queue<pi> h;
    14 int main(){
    15     scanf("%d",&n);
    16     for(int i=1;i<=n;++i){
    17         for(int j=1;j<=n;++j){
    18             scanf("%s",q);
    19             if(q[0]=='A') S=mkp(i,j);
    20             if(q[0]=='B') T=mkp(i,j);
    21             if(q[0]=='x') dan[i][j]=1;
    22         }
    23     }h.push(S);
    24     while(!h.empty()){
    25         pi u=h.front(); h.pop();
    26         for(int i=0;i<4;++i){
    27             int r1=u.first+d1[i],r2=u.second+d2[i];
    28             while(!dan[r1][r2]){
    29                 if(r1>n||r1<1||r2>n||r2<1) break;
    30                 if(vis[r1][r2]){
    31                     r1+=d1[i];r2+=d2[i];
    32                     continue; 
    33                 } 
    34                 vis[r1][r2]=vis[u.first][u.second]+1;
    35                 if(mkp(r1,r2)==T){
    36                     printf("%d",max(0,vis[r1][r2]-1));
    37                     return 0;
    38                 }h.push(mkp(r1,r2));
    39                 r1+=d1[i];r2+=d2[i];
    40             }
    41         }
    42     }printf("-1");
    43     return 0;
    44 }
    P1649
     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<queue>
     5 using namespace std;
     6 #define pi pair<int,int>
     7 #define mkp make_pair
     8 #define N 105
     9 const int d1[4]={0,1,0,-1};
    10 const int d2[4]={1,0,-1,0};
    11 char q[N]; bool dan[N][N];
    12 int a[N][N],vis[N][N],n;
    13 pi S,T; queue<pi> h;
    14 int main(){
    15     scanf("%d",&n);
    16     for(int i=1;i<=n;++i){
    17         scanf("%s",q);
    18         for(int j=1;j<=n;++j){
    19             if(q[j-1]=='A') S=mkp(i,j);
    20             if(q[j-1]=='B') T=mkp(i,j);
    21             if(q[j-1]=='x') dan[i][j]=1;
    22         }
    23     }h.push(S);
    24     while(!h.empty()){
    25         pi u=h.front(); h.pop();
    26         for(int i=0;i<4;++i){
    27             int r1=u.first+d1[i],r2=u.second+d2[i];
    28             while(!dan[r1][r2]){
    29                 if(r1>n||r1<1||r2>n||r2<1) break;
    30                 if(vis[r1][r2]){
    31                     r1+=d1[i];r2+=d2[i];
    32                     continue; 
    33                 }vis[r1][r2]=vis[u.first][u.second]+1;
    34                 if(mkp(r1,r2)==T){
    35                     printf("%d",max(0,vis[r1][r2]-1));
    36                     return 0;
    37                 }h.push(mkp(r1,r2));
    38                 r1+=d1[i];r2+=d2[i];
    39             }
    40         }
    41     }
    42 }
    bzoj1644
  • 相关阅读:
    Web API DataContract DataMember Serializable简单解释
    v-bind和v-on
    CSS大写转换
    Web API 实体显示注释
    Web API性能优化(一)压缩
    时间序列化问题
    border 0px和border none的区别
    CSS实现单行、多行文本溢出显示省略号
    MySQL防止重复插入记录SQL
    mvc和webapi同一解决方案调试办法
  • 原文地址:https://www.cnblogs.com/kafuuchino/p/10031718.html
Copyright © 2011-2022 走看看