array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(3) "428" ["text"]=> string(77) "Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(8) "DonetRen" ["tagsname"]=> string(55) "Visual Studio 2017|MSDN帮助|C#程序|.NET|Help Viewer" ["tagsid"]=> string(23) "[401,402,403,"300",404]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400964" ["_id"]=> string(3) "428" } [1]=> array(10) { ["id"]=> string(3) "427" ["text"]=> string(42) "npm -v;报错 cannot find module "wrapp"" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "zzty" ["tagsname"]=> string(50) "node.js|npm|cannot find module "wrapp“|node" ["tagsid"]=> string(19) "[398,"239",399,400]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400760" ["_id"]=> string(3) "427" } [2]=> array(10) { ["id"]=> string(3) "426" ["text"]=> string(54) "说说css中pt、px、em、rem都扮演了什么角色" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(12) "zhengqiaoyin" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400640" ["_id"]=> string(3) "426" } [3]=> array(10) { ["id"]=> string(3) "425" ["text"]=> string(83) "深入学习JS执行--创建执行上下文(变量对象,作用域链,this)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "Ry-yuan" ["tagsname"]=> string(33) "Javascript|Javascript执行过程" ["tagsid"]=> string(13) "["169","191"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511399901" ["_id"]=> string(3) "425" } [4]=> array(10) { ["id"]=> string(3) "424" ["text"]=> string(30) "C# 排序技术研究与对比" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "vveiliang" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(8) ".Net Dev" ["catesid"]=> string(5) "[199]" ["createtime"]=> string(10) "1511399150" ["_id"]=> string(3) "424" } [5]=> array(10) { ["id"]=> string(3) "423" ["text"]=> string(72) "【算法】小白的算法笔记:快速排序算法的编码和优化" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "penghuwan" ["tagsname"]=> string(6) "算法" ["tagsid"]=> string(7) "["344"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511398109" ["_id"]=> string(3) "423" } [6]=> array(10) { ["id"]=> string(3) "422" ["text"]=> string(64) "JavaScript数据可视化编程学习(二)Flotr2,雷达图" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "chengxs" ["tagsname"]=> string(28) "数据可视化|前端学习" ["tagsid"]=> string(9) "[396,397]" ["catesname"]=> string(18) "前端基本知识" ["catesid"]=> string(5) "[198]" ["createtime"]=> string(10) "1511397800" ["_id"]=> string(3) "422" } [7]=> array(10) { ["id"]=> string(3) "421" ["text"]=> string(36) "C#表达式目录树(Expression)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "wwym" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1511397474" ["_id"]=> string(3) "421" } [8]=> array(10) { ["id"]=> string(3) "420" ["text"]=> string(47) "数据结构 队列_队列实例:事件处理" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "idreamo" ["tagsname"]=> string(40) "C语言|数据结构|队列|事件处理" ["tagsid"]=> string(23) "["246","247","248",395]" ["catesname"]=> string(12) "数据结构" ["catesid"]=> string(7) "["133"]" ["createtime"]=> string(10) "1511397279" ["_id"]=> string(3) "420" } [9]=> array(10) { ["id"]=> string(3) "419" ["text"]=> string(47) "久等了,博客园官方Android客户端发布" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(3) "cmt" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511396549" ["_id"]=> string(3) "419" } } ["count"]=> int(200) } 222 Bzoj 1687: [Usaco2005 Open]Navigating the City 城市交通 广搜,深搜 - 爱码网

1687: [Usaco2005 Open]Navigating the City 城市交通

Time Limit: 5 Sec  Memory Limit: 64 MB
Submit: 122  Solved: 85
[Submit][Status][Discuss]

Description

    由于牛奶市场的需求,奶牛必须前往城市,但是唯一可用的交通工具是出租车.教会奶牛如何在城市里打的.
    给出一个城市地图,东西街区E(1≤E≤40),南北街区N(1≤N≤30).制作一个开车指南给出租车司机,告诉他如何从起点(用S表示)到终点(用E表示).每一个条目用空格分成两部分,第一个部分是方向(N,E,S,W之一),第二个是一个整数,表示要沿着这个方向开几个十字路口.如果存在多条路线,你应该给出最短的.数据保证,最短的路径存在且唯一.    地图中“+”表示十字路口,道路用“I”和“一”表示.建筑和其他设施用“.”表示.下面是一张地图:
 

3 6

+-+-+.+-+-+

|...|.....|

+-+.+-+-+-+

..|.......|

S-+-+-+.E-+

 
    出租车可以沿着东,北,西,北,东开两个十字路口,以此类推.具体将由样例给出
 

3 6

+-+-+.+-+-+

|...|.....|

+-+.+-+-+-+

..|.......|

S-+-+-+.E-+

Input

    第1行:两个用空格隔开的整数N和E.

    第2到2N行:每行有2E-I个字符,表示地图.

 

Output

    每行有一个表示方向的字母和一个表示要开几个十字路口的数字表示.

 

Sample Input

 

Sample Input

3 6

+-+-+.+-+-+

|...|.....|

+-+.+-+-+-+

..|.......|

S-+-+-+.E-+

 

Sample Output

E 1
N 1
W 1
N 1
E 2
S 1
E 3
S 1
W 1

HINT

 

Source

Silver

题解:

BFS+DFS

先用BFS遍历图,跑出所有的步数,再用DFS倒推找到合法路径。最后输出即可。

  1 #include<bits/stdc++.h>
  2 using namespace std;
  3 #define INF 1e9
  4 int fx[5]={-1,1,0,0};
  5 int fy[5]={0,0,-1,1};
  6 int n,m,dis[66][88],pd,bx,by;
  7 int qx[4810],qy[4810];
  8 bool vv[66][88],vis[66][88];
  9 char a[66][88];
 10 void dfs(int x,int y,int bs)
 11 {
 12     int i,xx,yy;
 13     vv[x][y]=true;
 14     if(pd==1)return;
 15     if(x==bx&&y==by){pd=1;return;}
 16     for(i=0;i<=3;i++)
 17     {
 18         xx=x+fx[i];
 19         yy=y+fy[i];
 20         if(xx>=1&&xx<=2*n-1&&yy>=1&&yy<=2*m-1&&dis[xx][yy]==bs-1)
 21         {
 22             dfs(xx,yy,bs-1);
 23             if(pd==1)return;
 24         }
 25     }
 26 }
 27 void print(int k)
 28 {
 29     if(k==0)printf("N");
 30     if(k==1)printf("S");
 31     if(k==2)printf("W");
 32     if(k==3)printf("E");
 33 }
 34 int main()
 35 {
 36     int i,j,xx,yy,ex,ey,jl,fx1,ux,uy,vx,vy,head,tail;
 37     scanf("%d %d",&n,&m);
 38     for(i=1;i<=2*n-1;i++)scanf("\n%s",a[i]+1);
 39     bx=0;by=0;ex=0;ey=0;
 40     for(i=1;i<=2*n-1;i++)
 41     {
 42         for(j=1;j<=2*m-1;j++)
 43         {
 44             if(a[i][j]=='S')bx=i,by=j;
 45             if(a[i][j]=='E')ex=i,ey=j;
 46             dis[i][j]=INF;
 47         }
 48     }
 49     head=0;tail=1;
 50     qx[tail]=bx;qy[tail]=by;dis[bx][by]=0;
 51     memset(vis,false,sizeof(vis));vis[bx][by]=true;
 52     pd=0;
 53     while(head!=tail)
 54     {
 55         head++;if(head==4820)head=0;
 56         ux=qx[head];
 57         uy=qy[head];
 58         for(i=0;i<=3;i++)
 59         {
 60             vx=ux+fx[i];
 61             vy=uy+fy[i];
 62             if(vx>=1&&vx<=2*n-1&&vy>=1&&vy<=2*m-1&&vis[vx][vy]==false&&dis[vx][vy]>dis[ux][uy]+1&&a[vx][vy]!='.')
 63             {
 64                 vis[vx][vy]=true;
 65                 dis[vx][vy]=dis[ux][uy]+1;
 66                 tail++;if(tail==4820)tail=0;
 67                 qx[tail]=vx;
 68                 qy[tail]=vy;
 69                 if(vx==ex&&vy==ey){pd=1;break;}
 70             }
 71         }
 72         if(pd==1)break;
 73         vis[ux][uy]=false;
 74     }
 75     memset(vv,false,sizeof(vv));
 76     pd=0;
 77     dfs(ex,ey,dis[ex][ey]);
 78     fx1=-1;//北0,南1,西2,东3.
 79     jl=0;
 80     vv[bx][by]=false;
 81     while(1)
 82     {
 83         if(bx==ex&&by==ey){if(jl!=0){print(fx1);printf(" %d\n",(jl+1)/2);}break;}
 84         for(i=0;i<=3;i++)
 85         {
 86             xx=bx+fx[i];
 87             yy=by+fy[i];
 88             if(vv[xx][yy]==true)break;
 89         }
 90         vv[xx][yy]=false;
 91         bx=xx;
 92         by=yy;
 93         if(i==fx1)jl++;
 94         else
 95         {
 96             if(fx1==-1){fx1=i;jl=1;}
 97             else {print(fx1);printf(" %d\n",(jl+1)/2);fx1=i;jl=1;}
 98         }
 99     }
100     return 0;
101 }

 

相关文章: