羅区p1443

「日の形状を歩き、その後、最短経路のそれぞれの位置に出力する馬は、ステージ出力に来ている-1

しかし、AC; - 直接BFSの検索によって解決が、出力いくつかの問題を抱えて、私はprintfの(「%5D)で開始することができますすべてのWA、coutの<<左<< setw(5)になり

私はこの問題は、また、printf関数を使用した問題を解決するのか分かりません

#include <ビット/ STDC ++ H> 使用して名前空間STDを、
typedefの長い長いLL。
typedefの符号なしの長い長いULL。const int型 INF = - 1 ;
INTのN、M。
int型のSX、SY;
INT迷路[ 500 ] [ 500 ]。
int型の D [ 500 ] [ 500 ]。
INT DX [ 8 ] = { - 1、 - 2、 - 2、 - 1122

 
  

 1 }、DY [ 8 ] = { - 2、 - 11221、 - 1、 - 2 }。

ボイド BFS(int型のx、int型のY){ 
  キュー <ペア< 整数整数 >> Q。
  q.push(対 < 整数整数 > (X、Y)); 
  D [X] [Y] = 0 ; 

  しばらく(!q.empty()){ 
    ペア < int型INT > T = q.front()。q.pop(); 

    以下のためにint型 i = 0 ; iは< 8 ; I ++ ){
       int型 NX = t.first + DX [I]。
      INT NY = t.second + DY [I]。

      もし(NX> = 0 && NX <N && NY> = 0 && NY <M && D [NX] [NY] == INF){ 
        D [NX] [NY] = D [t.first] [t.second ] + 1 
        q.push(対 < 整数整数 > (NX、NY))。
      } 

    } 
  } 
} 

int型のmain(){
  イオス::); 

  CIN >> N >> M >> SX >> SY。
  memsetの(D、INF、はsizeofのD)。

  BFS(SX - 1、SY- 1 )。

  以下のためにint型 I = 0 ; iがN <; Iは++ ){
     ためINT J = 0 ; J <M、J ++ 
      COUT <<左<< setw(5)<< D [i]は[J]。
    coutの << てendl; 
  } 
  戻り 0 
}

 

おすすめ

転載: www.cnblogs.com/ssNiper/p/11265589.html