|Tyvj|BFS|P1030 乳草的入侵

来源:互联网 发布:win7重置网络 编辑:程序博客网 时间:2024/04/27 19:17

http://tyvj.cn/p/1030

直接BFS就行,注意X,Y


参考代码:

#include<cstdio>struct sb {       int x;       int y;       int day;       };const int dx[8] = {1,0,-1, 0,1,-1,-1, 1},           dy[8] = {0,1, 0,-1,1,-1, 1,-1};int n,m,mx,my;int r,c;sb hs[20000];char ch[200][200];int init() {    scanf("%d%d%d%d\n", &m, &n, &mx, &my);    r = n - my;    c = mx-1;    int i;    for (i=0;i<n;i++) {        gets(ch[i]);    }}void bfs (){   int tail=1,head=0;   int i;   hs[1].x = r, hs[1].y = c, hs[1].day = 0; ch[r][c]='#';   do {       head++;       for (i=0;i<8;i++) {           int cx = hs[head].x + dx[i], cy = hs[head].y + dy[i];           if (cx >=0 && cy >=0 && cx < n && cy < m && ch[cx][cy] =='.') {                  tail++;                  hs[tail].x = cx;                  hs[tail].y = cy;                  hs[tail].day = hs[head].day+1;                  ch[cx][cy] = '#';                /*  printf("\n");                  for (int o=0;o<n;o++) {                    puts(ch[o]);}printf("\n");                    printf("%d %d", hs[head].x,hs[head].y);*/           }       }   } while (head<tail);   printf("%d\n", hs[tail].day);}int main() {    init();    bfs();    return 0;}


0 0