全TLE求助
  • 板块P3395 路障
  • 楼主luqyou
  • 当前回复0
  • 已保存回复0
  • 发布时间2022/8/1 09:56
  • 上次更新2023/10/27 17:33:12
查看原帖
全TLE求助
464732
luqyou楼主2022/8/1 09:56
#include<bits/stdc++.h>
using namespace std;
int dx[]={0,1,-1,0,0};
int dy[]={0,0,0,1,-1};
int f[1001][1001],vis[1001][1001],t;
queue<pair<int,int> > q;
int main(){
    scanf("%d",&t);
    while(t--){
        bool flag=0;
        int n,step=0;
        scanf("%d",&n);
        q.push(make_pair(1,1));
        vis[1][1]=1;
        while(!q.empty()){
            step++;
            if(step<=2*n-2){
                int xx,yy;
                scanf("%d%d",&xx,&yy);
                f[xx][yy]=1;
            }
            if(q.front().first==n&&q.front().second==n){
                flag=1;
                break;
            }
            for(int i=1;i<=4;i++){
                int xx=q.front().first+dx[i],yy=q.front().second+dy[i];
                if(xx>0&&xx<=n&&yy>0&&yy<=n&&!f[xx][yy]&&!vis[xx][yy]){
                	q.push(make_pair(xx,yy));
                	vis[xx][yy]=1;
                	q.pop();
                } 
                
            }
        }
        if(flag) printf("Yes\n");
        else printf("No\n");
        while(!q.empty()) q.pop();
    }
    return 0;
}
2022/8/1 09:56
加载中...