博物館でCodeforces 598D(CCPC-wannaflyキャンプ1日目)イゴール

http://codeforces.com/problemset/problem/598/D

分析:BFS、接続の周辺エリアと同じですが、あまりにも多くのクエリーTLEを引き起こす可能性がありますので、あなたは、ストレージ・エリアと通信したい答えは、接続されたコンポーネントの隣のクエリが直接結果を得ることができ

1の#include <iostreamの>
 2の#include <sstream提供>
 3の#include <cstdioを>
 4の#include <cstdlib>
 5の#include < ストリング >
 6の#include <CStringの>
 7の#include <アルゴリズム>
 8の#include <機能>
 9#含む<iomanip>
 10の#include <数値>
 11の#include <cmath>
 12の#include <キュー>
 13の#include <ベクトル>
 14の#include < 設定 >
 15の#include <CCTYPE>
16  CONST  ダブル PI = ACOS( - 1.0 )。
17  のconst  int型 INF = 0x3f3f3f3f 18  CONST  INT NINF = -INF - 1 19 typedefの長い 長いLL。
20  の#define MOD 1000007
 21  使って 名前空間STDを、
22のtypedef対< INTINT > P。
23  チャーマップ[ 1005 ] [ 1005 ]。
24  int型N、M、ANS、CNT。
25  INT X、Y。
26  int型 DX [ 4] = { 10、 - 10 }、DY [ 4 ] = { 010、 - 1 }。
27  INT VIS [ 1005 ] [ 1005 ];
28  のint NUM [ 1000025 ]。
29の ボイドBFS()
 30  {
 31      のint I、J。
32      キュー<P> Q。
33      q.push(P(X、Y))。
34      CNT ++ ;
35      VIS [X] [Y] = CNT。
36     ANS = 0 ;
37      一方(q.size())
 38      {
 39          Pの一時= q.front()。
40          q.pop()。
41の          ANS + = 4 42          のために(i = 0 ; iは< 4 ; ++ I)
 43          {
 44              INT NX = temp.first + DX [I]。
45              INT NY = temp.second + DY [I]。
46              であれば(NX> = 0 && NX <N && NY> = 0 && NY < M)
 47              {
48                  であれば(地図[NX] [ザ] == ' ' 49                 {
 50                      ans-- 51 であれば(!可視[NX] [A])
 52                     {
 53                         q.push(P(NX、NY))。
54                          VIS [NX] [] = CNT。
55                     }
 56                 }
 57             }
 58 59                  ans-- 60         }
 61     }
 62      NUM [CNT] =                                        
  ANS;
63      coutの<< ANS << てendl;
64  }
 65  
66  のint main()の
 67  {
 68      INT I、J、K。
69      CIN >> N >> M >> K。
70      のために(i = 0 ; iがn <; ++ I)
 71          CIN >> [i]のマップ。
72      のmemset(NUM、 - 1はsizeof (NUM))。
73      のmemset(VIS、0はsizeof (VIS))。
74      CNT = 0 75      一方(k--76      {
 77          CIN >> X >> Y。
78          x--、y-- 79          であれば(VIS [X] [Y] == 0 80の             BFS()。
81          
82              COUT << NUM [VIS [X] [Y]] << ENDL。
83      }
 84      リターン 0 85 }

 

おすすめ

転載: www.cnblogs.com/veasky/p/11223467.html