コード例 #1
0
 void cal_disw() {
     memset(disw, -1, sizeof(disw));
     deque<Pos> sq(0);
     for(int i = 0; i < wk.size(); ++i) {
         disw[wk[i].x][wk[i].y] = 0;
         sq.push_back(wk[i]);
     }
     while(!sq.empty()) {
         Pos p = sq.front();
         sq.pop_front();
         int now = disw[p.x][p.y];
         for(int d = 0; d < 4; ++d) {
             p.x += dx[d];
             p.y += dy[d];
             if(p.inside(n) && disw[p.x][p.y] == -1) {
                 disw[p.x][p.y] = now + 1;
                 sq.push_back(p);
             }
             p.x -= dx[d];
             p.y -= dy[d];
         }
     }
 }