题意:n*m矩阵a.若a[i][j]==1则可以往左右走,若a[i][j]==0 则可以往上下走.
每一秒可以按上述规则移动,并且每秒钟矩阵所有的值翻转。
n*m<=1e5.问从(sx,sy)到(tx,ty)的最短时间.

首先n*m<=1e5 开一维数组表示地图.
若地图每秒不变化 那么就是一个裸的BFS

现在地图每秒翻转 初始地图设为A 翻转的设为B.那么记录每个点状态(x,y,st(A/B),d)

每一步权值都为1,跑BFS即可.

#include <bits/stdc++.h>
using namespace std;
const int N=2e5+5;
int T,n,m,sx,sy,tx,ty,res=1e9;
bool a[N*2],vis[N][2];
int dx[]={-1,1,0,0};
int dy[]={0,0,-1,1};
struct node{int x,y,st,d;node(){}node(int xx,int yy,int stt,int dd){x=xx,y=yy,st=stt,d=dd;}
};
bool check(int x,int y)
{return (x>=0&&x<n&&y>=0&&y<m);
}
void bfs()
{memset(vis,0,sizeof(vis));queue<node> q;q.push(node(sx,sy,0,0));vis[sx*m+sy][0]=true;while(!q.empty()){node u=q.front();q.pop();int pos=u.x*m+u.y;int st=(a[pos]+u.d)%2;if(u.x==tx&&u.y==ty)res=min(res,u.d);for(int i=0;i<4;i++){int nx=u.x+dx[i],ny=u.y+dy[i];int np=nx*m+ny,nst=1-u.st;if(check(nx,ny)==false)continue;if(i<2&&st==0||(i>=2&&i<4&&st)){if(!vis[np][nst]){vis[np][nst]=true;q.push(node(nx,ny,nst,u.d+1));}}}}
}
int main()
{ios::sync_with_stdio(false);cin.tie(0);cin>>T;while(T--){res=1e9;cin>>n>>m;for(int i=0;i<n;i++)for(int j=0;j<m;j++)cin>>a[i*m+j];cin>>sx>>sy>>tx>>ty;sx--,sy--,tx--,ty--;bfs();if(res>=1e9)res=-1;cout<<res<<'\n';}return 0;
} 

ZOJ 4020 Traffic Lights BFS相关推荐

  1. CodeForces刷题C语言:Next Test、Spit Problem、Traffic Lights、Reconnaissance、Borze

    记录洛谷刷题C语言 一.Next Test 题面翻译 题面描述 给出 nnn 个互不相同的整数 aia_iai​ ,从小到大找第一个没有出现过的整数. 输入格式 第一行一个正整数 nnn ,之后是 n ...

  2. Traffic Lights(翻译)

    来源:https://codeforces.com/contest/29/problem/B Traffic Lights A car moves from point A to point B at ...

  3. 【SGU】103. Traffic Lights 最短路

    传送门:[SGU]103. Traffic Lights 题目大意: 在一个N个点M条边的城市里,每个点上有一个交通灯,交通灯亮B.P颜色,在离开始r的时间内交通灯会亮c颜色(c为B.P中的一种),然 ...

  4. signature=23e9377f593aff2d118917dcf0d9f6d0,Turning streams in the traffic lights system

    摘要: Observations of a currently functioning in Poland traffic lights system shows a need for it's mo ...

  5. 【ZOJ - 4020 】Traffic Light (bfs,分层图)

    题干: n*m矩阵a.若a[i][j]==1则可以往左右走,若a[i][j]==0 则可以往上下走. 每一秒可以按上述规则移动,并且每秒钟矩阵所有的值翻转. n*m<=1e5.问从(sx,sy) ...

  6. ZOJ 1217 Eight(单向BFS+map)

    Eight 题目传送门~ Time Limit: 10000 msMemory Limit: 32768 KB Scenario The 15-puzzle has been around for o ...

  7. 29 B. Traffic Lights

    题目: 求车通过红绿灯的时间 题解: 若车过d时是绿灯,时间是总路程/速度 若车过d时是红灯,时间是总路程/速度+等红灯时间 代码: #include<iostream> #include ...

  8. 【codeforces 29B】Traffic Lights

    [题目链接]:http://codeforces.com/problemset/problem/29/B [题意] 一辆车; 让从A开到B; 然后速度是v; (只有在信号灯前面才能停下来..否则其他时 ...

  9. TL-SSD: Detecting Traffic Lights by Single Shot Detection 论文复现

    1.按照我上一篇博客安装caffe-ssd; 2.安装开源网站提供的文档替换caffe-ssd,并重新编译caffe. 2.1.安装pycaffe cd caffe-master/python sou ...

最新文章

  1. BZOJ3246 IOI2013Dreaming
  2. 打开摄像头,2D插画实时变动画,中国程序媛出品,Demo在线可玩
  3. Zookeeper源码分析(二) ----- zookeeper日志
  4. 软件推荐-有道超级计算器
  5. mysql5.0.27+apache2.0.59+php5.2.0+phpMyAdmin-2.6.4-pl3
  6. 掌握基本的Java程序开发过程 题库 1213
  7. pgsql函数定时更新表_Postgresql PL/PGSQL 程序语言系列 1 (存储过程过时了吗,与函数)...
  8. linux内存管理之malloc
  9. 使用SQLSERVER的扩展存储过程实现远程备份与恢复
  10. 【晒出你的第83行代码】跬步千里,十二年的老代码更是技术的沉淀!
  11. 基于大数据架构实现景点游客数据分析平台,全国景点游客数据管理系统
  12. 电脑监控软件应该怎样安装?安装简单吗?
  13. 针对初学者的 MQL 5 中的自定义指标
  14. firefox硬件加速 linux,火狐浏览器硬件加速相关资料以及开启关闭火狐硬件加速方法...
  15. std::result_of用法
  16. Visual Studio Community2019 30天试用期过期,无法登录微软账户
  17. SQL数据库完美恢复 SQL数据库损坏修复
  18. NLM(Non-Local means)算法原理
  19. 《流浪地球》后续,深度对话刘慈欣:地球只是太空中的一粒尘埃
  20. 【前端面试题】原型和原型链-js

热门文章

  1. 深入分析Java Web-02-Java的I/O
  2. Service id not legal hostname (pin_user)
  3. python爬豆瓣top250书籍_Python——爬取目标豆瓣图书TOP250
  4. IBM云计算平台汽车碰撞测试构建方案
  5. 无人驾驶汽车系统入门(六)——基于传统计算机视觉的车道线检测(1)
  6. 悟空帮你理解https
  7. 第20篇:WEB漏洞~文件上传~基础及过滤方式
  8. 平面设计视频教程-传智-专题视频课程
  9. 程序员如何用GitHub打造个人博客(一)
  10. Maven中 jar包冲突的解决办法