#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
#include <algorithm>
#include <queue>
#include <vector>
using namespace std;
const char*dirs="NESW";
const char*turns="FLR";
int r0,c0,dir,r1,c1,r2,c2,has_edge[][][][],d[][][];
int dir_id(char c){
return strchr(dirs,c)-dirs;
}
int turn_id(char c){
return strchr(turns,c)-turns;
}
int dr[]={-,,,};
int dc[]={,,,-};
struct Node{
int r,c,dir;
};
Node p[][][];
Node walk(Node u,int turn){
int dir=u.dir;
if (turn==) dir=(dir+)%;
if (turn==) dir=(dir+)%;
Node t;
t.r=u.r+dr[dir];t.c=u.c+dc[dir];t.dir=dir;
return t;
}
int init(){
char ch;
memset(d,,sizeof(d));
cin>>r0>>c0>>ch>>r2>>c2;
int dir=dir_id(ch);
r1=r0+dr[dir];c1=c0+dc[dir];
Node t;
t.r=r1;t.c=c1;t.dir=dir;
p[r1][c1][dir]=t;
int x,y;
while (cin>>x&&x){
cin>>y;
string temp;
while (cin>>temp&&temp!="*"){
dir=dir_id(temp[]);
for (int i=;i<temp.size();i++){
int turn=turn_id(temp[i]);
has_edge[x][y][dir][turn]=;
}
}
}
}
int inside(int x,int y){
return (x>&&y>)?:;
}
void printf_ans(Node u){
vector<Node> nodes;
while (){
nodes.push_back(u);
if (d[u.r][u.c][u.dir]==) break;
u=p[u.r][u.c][u.dir];
}
Node t;
t.r=r0;t.c=c0;t.dir=dir;
nodes.push_back(t);
int cnt=;
for (int i=nodes.size()-;i>=;i--){
if (cnt%==) printf(" ");
printf(" (%d,%d)",nodes[i].r,nodes[i].c);
if (++cnt %==) printf("\n");
}
if (nodes.size()%!=) printf("\n");
}
void solve(){
queue<Node>q;
memset(d,-,sizeof(d));
Node u;
u.r=r1;u.c=c1;u.dir=dir;
d[u.r][u.c][u.dir]=;
q.push(u);
while (!q.empty()){
Node u=q.front();q.pop();
if (u.r==r2&&u.c==c2){
printf_ans(u);
return;
}
for (int i=;i<;i++){
Node v=walk(u,i);
if (has_edge[u.r][u.c][u.dir][i]&&inside(v.r,v.c)&&d[v.r][v.c][v.dir]<){
d[v.r][v.c][v.dir]=d[u.r][u.c][u.dir]+;
p[v.r][v.c][v.dir]=u;
q.push(v);
}
}
}
printf("No Solution Possible\n");
}
int main()
{
string Name;
while (cin>>Name&&Name!="END"){
cout<<Name<<endl;
init();
solve();
}
}

WA代码,至今不知道错哪了........哪位大神若是有时间帮我看看吧,code大部分是刘汝佳第二部书上的

UVa816,Ordering Tasks,WA的更多相关文章

  1. uva10905同一思路的两种做法,前一种WA,后一种AC

    这道题应该算一道普通的排序吧,实际上就是另一种形式地比大小,自己最开始是用int型存,后来觉着不行,改用long,结果还是WA,这是第一个程序. 第二个程序是改用string处理,确实比int方便很多 ...

  2. Django-rest-framework(六)filter,ordering,search

    filter queryset 使用request.user相关的queryset class PurchaseList(generics.ListAPIView): serializer_class ...

  3. locust===官方说明文档,关于tasks

    安装: >>> pip  install locust locust在官方simple_code中如下: from locust import HttpLocust, TaskSet ...

  4. 【ACM】那些年,我们挖(WA)过的最短路

    不定时更新博客,该博客仅仅是一篇关于最短路的题集,题目顺序随机. 算法思想什么的,我就随便说(复)说(制)咯: Dijkstra算法:以起始点为中心向外层层扩展,直到扩展到终点为止.有贪心的意思. 大 ...

  5. 拓扑排序(Topological Order)UVa10305 Ordering Tasks

    2016/5/19 17:39:07 拓扑排序,是对有向无环图(Directed Acylic Graph , DAG )进行的一种操作,这种操作是将DAG中的所有顶点排成一个线性序列,使得图中的任意 ...

  6. Ordering Tasks(拓扑排序+dfs)

    Ordering Tasks John has n tasks to do. Unfortunately, the tasks are not independent and the executio ...

  7. UVA.10305 Ordering Tasks (拓扑排序)

    UVA.10305 Ordering Tasks 题意分析 详解请移步 算法学习 拓扑排序(TopSort) 拓扑排序的裸题 基本方法是,indegree表示入度表,vector存后继节点.在tops ...

  8. Ordering Tasks UVA - 10305 图的拓扑排序

    John has n tasks to do. Unfortunately, the tasks are not independent and the execution of one task i ...

  9. 性能测试指标:TPS,吞吐量,并发数,响应时间

    性能测试指标:TPS,吞吐量,并发数,响应时间 常用的网站性能测试指标有:TPS.吞吐量.并发数.响应时间.性能计数器等. 并发数并发数是指系统同时能处理的请求数量,这个也是反应了系统的负载能力. 响 ...

随机推荐

  1. 201521123114 《Java程序设计》第7周学习总结

    1. 本章学习总结 以你喜欢的方式(思维导图或其他)归纳总结集合相关内容. 2. 书面作业 Q1. ArrayList代码分析 1.1 解释ArrayList的contains源代码 public b ...

  2. 201521123042 《Java程序设计》第4周学习总结

    1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 多态性的应用: instanceof运算符: 通过 instanceof判断父类引用所引用的 ...

  3. 201521123076 《Java程序设计》第9周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 本次PTA作业题集异常 1.常用异常 题目5-1 1.1 截图你的提交结果(出现学号) 1.2 自己 ...

  4. 201521123116 《java程序设计》第十四周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容. ①关系型数据库的定义:使用表(table)来存储数据:使用行(row)区分不同- 记录,每行代表一条记录:每一行 ...

  5. 201521123001《Java程序设计》第9周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 本次PTA作业题集异常 常用异常 题目5-1 1.1 截图你的提交结果(出现学号) 1.2 自己以前 ...

  6. DOM【介绍、HTML中的DOM、XML中的DOM】

    什么是DOM? DOM(Document Object Model)文档对象模型,是语言和平台的中立接口. 允许程序和脚本动态地访问和更新文档的内容. 为什么要使用DOM? Dom技术使得用户页面可以 ...

  7. 鸟哥Linux学习笔记04

    1, . 当前目录  ..上层目录 2, 目录的相关操作 1)cd(切换目录) [root@node1 ~]# cd [相对路径或绝对路径] [root@node1 ~]# cd      : 回到自 ...

  8. Mybatis源码解析-DynamicSqlSource和RawSqlSource的区别

    XMLLanguageDriver是ibatis的默认解析sql节点帮助类,其中的方法其会调用生成DynamicSqlSource和RawSqlSource这两个帮助类,本文将对此作下简单的简析 应用 ...

  9. Swiper.js使用方法

    <!DOCTYPE html> <html> <head>  ... <link rel="stylesheet" href=" ...

  10. Spring学习—生成图片验证码

    今天想学下一下验证码的生成,就之前搭建好的一个spring框架上写了一个demo,我会贴出细节代码,但是spring的配置就不在介绍了.需要完整代码可以联系我! 会从前台页面到后台实现完整的讲解: 1 ...