#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. 201521123103 《Java学习笔记》 第七周学习总结

    一.本周学习总结 1.以你喜欢的方式(思维导图或其他)归纳总结集合相关内容. 二.书面作业 1.ArrayList代码分析 1.1 解释ArrayList的contains源代码 源代码如下: pub ...

  2. 201521123015 《Java程序设计》第5周学习总结

    1. 本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点. 2. 书面作业 1.代码阅读:Child压缩包内源代码 1.1 com.parent包中Child.java文件能否编译通过? ...

  3. Java课程设计 学生基本信息管理系统 团队博客

    学生基本信息管理系统团队博客 项目git地址 https://git.oschina.net/Java_goddess/kechengsheji 项目git提交记录截图 项目功能架构图与主要功能流程图 ...

  4. 市场主流5款HTML5开发框架详解

    我们经常听见的前端框架是一个非常大的范词,因为前端框架都是基于JS.CSS.HTML5技术开发实现的,不过选择一个HTML5开发框架需要考虑哪些方面,首先就是需要什么样的功能,其次就是技术实现,不过当 ...

  5. Hibernate第四篇【集合映射、一对多和多对一】

    前言 前面的我们使用的是一个表的操作,但我们实际的开发中不可能只使用一个表的-因此,本博文主要讲解关联映射 集合映射 需求分析:当用户购买商品,用户可能有多个地址. 数据库表 我们一般如下图一样设计数 ...

  6. JUDE-UML工具软件介绍

    JUDE社区版(不考虑破-解). 现在Jude改名为Astah了.JUDE已停止发展,Astah是它的替代品.Jude有3个版: Professional版, Community版(免费),Share ...

  7. JavaScript随机数类型

    1.Math.random(); 结果为0-1间的一个随机数(包括0,不包括1) 2.Math.floor(num); 参数num为一个数值,函数结果为num的整数部分. 3.Math.round(n ...

  8. oracle pl/sql 包

    包用于在逻辑上组合过程和函数,它由包规范和包体两部分组成.1).我们可以使用create package命令来创建包,如:i.创建一个包sp_packageii.声明该包有一个过程update_sal ...

  9. cglib代理

    简介: github地址:https://github.com/cglib/cglib,可以访问这个地址查看cglib源码和相关文档. 简单的摘录了wiki上关于cglib的描述: cglib is ...

  10. redhat下yum命令安装(替换为centos yum命令)

    redhat默认自带的yum源需要注册,才能更新,报错:This system is not registered to Red Hat Subscription Management. You ca ...