[洛谷P3395]路障题解

来源:互联网 发布:mac不能播放视频 编辑:程序博客网 时间:2024/06/05 15:01

原题
bfs,边读入边处理,检查能不能达到终点

#include<iostream>#include<cstring>#define LEN 5005using namespace std;int n,t,x,y;int board[LEN][LEN]={0};int main(){         cin>>t;//次数      while(t)      {         t--;        memset(board,0,sizeof(board));//每次清空数组        board[1][1]=1;        cin>>n;        for(int i=1;i<=n*2-2;i++)          {            cin>>x>>y;            if(x==n&&y==n&&x+y<i+2)              {                  cout<<"No\n";//在到达终点之前(n,n)已经有路障,已不能到达终点,退出                  break;              }            if(x+y>i+2) board[x][y]=-1;            }           for(int i=1;i<=n;i++)            for(int j=1;j<=n;j++)              if((board[i-1][j]==1||board[i][j-1]==1)&&board[i][j]!=-1)                board[i][j]=1;        if(board[n][n]==1)//到终点          cout<<"Yes\n";        else          cout<<"No\n";      }      return 0;}
1 0
原创粉丝点击