1.16学习总结

今天完成了P3395:路障。

1.16学习总结_第1张图片本题考查深搜,所以需要定义结构体,调用bfs函数从(1,1)开始进行深搜,,向四个方向进行扩展,每扩展一次就按顺序放下路障,深搜完判断是否到达终点,到达舒畅Yes,反之输出No,需要注意的是有多组数据,所以对每组数据深搜前要先对路障,路障坐标,队列初始化。

#include 
#include 
int m,head,tail;
int book[1001][1001];
int next[4][2]={{0,1,},
{0,-1},
{-1,0},
{1,0}};
struct hly
{
    int x,y;
}q[1000001],a[1001];
void bfs()
{
        head=0;
        tail=0;
        q[tail].x=1;
        q[tail].y=1;
        book[1][1]=1;
        tail++;
        int s=0;
        while(headm||ty>m)
                    continue;
                if(book[tx][ty]==0){
                    book[tx][ty]=1;
                    q[tail].x=tx;
                    q[tail].y=ty;
                    tail++;
                }
            }
            book[a[s].x][a[s].y]=1;
            s++;
            head++;
        }
}
int main()
{
    int n;
    scanf("%d",&n);
    while(n--){
        memset(book,0,sizeof(book));
        memset(a,0,sizeof(a));
        memset(q,0,sizeof(q));
        scanf("%d",&m);
        for(int i=0;i<2*m-2;i++){
        scanf("%d %d",&a[i].x,&a[i].y);
        }
        bfs();
        int i;
        for(i=tail;i>=0;i--){
            if(q[i].x==m&&q[i].y==m){
                printf("Yes\n");
                break;
            }
        }
        if(i<=-1)
            printf("No\n");
    }
    return 0;
}

你可能感兴趣的:(学习)