Here We Go(relians) Again
Here We Go(relians) Again |
| Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) |
| Total Submission(s): 235 Accepted Submission(s): 146 |
|
Problem Description
The Gorelians are a warlike race that travel the universe conquering new worlds as a form of recreation. Given their violent, fun-loving nature, keeping their leaders alive is of serious concern. Part of the Gorelian security plan involves changing the traffic patterns of their cities on a daily basis, and routing all Gorelian Government Officials to the Government Building by the fastest possible route.
Fortunately for the Gorelian Minister of Traffic (that would be you), all Gorelian cities are laid out as a rectangular grid of blocks, where each block is a square measuring 2520 rels per side (a rel is the Gorelian Official Unit of Distance). The speed limit between two adjacent intersections is always constant, and may range from 1 to 9 rels per blip (a blip, of course, being the Gorelian Official Unit of Time). Since Gorelians have outlawed decimal numbers as unholy (hey, if you\\\\\\\'re the dominant force in the known universe, you can outlaw whatever you want), speed limits are always integer values. This explains why Gorelian blocks are precisely 2520 rels in length: 2520 is the least common multiple of the integers 1 through 9. Thus, the time required to travel between two adjacent intersections is always an integer number of blips. In all Gorelian cities, Government Housing is always at the northwest corner of the city, while the Government Building is always at the southeast corner. Streets between intersections might be one-way or two-way, or possibly even closed for repair (all this tinkering with traffic patterns causes a lot of accidents). Your job, given the details of speed limits, street directions, and street closures for a Gorelian city, is to determine the fastest route from Government Housing to the Government Building. (It is possible, due to street directions and closures, that no route exists, in which case a Gorelian Official Temporary Holiday is declared, and the Gorelian Officials take the day off.) |
|
Input
The input consists of a set of cities for which you must find a fastest route if one exists. The first line of an input case contains two integers, which are the vertical and horizontal number of city blocks, respectively. The smallest city is a single block, or 1 by 1, and the largest city is 20 by 20 blocks. The remainder of the input specifies speed limits and traffic directions for streets between intersections, one row of street segments at a time. The first line of the input (after the dimensions line) contains the data for the northernmost east-west street segments. The next line contains the data for the northernmost row of north-south street segments. Then the next row of east-west streets, then north-south streets, and so on, until the southernmost row of east-west streets. Speed limits and directions of travel are specified in order from west to east, and each consists of an integer from 0 to 9 indicating speed limit, and a symbol indicating which direction traffic may flow. A zero speed limit means the road is closed. All digits and symbols are delimited by a single space. For east-west streets, the symbol will be an asterisk \\\\\\\'*\\\\\\\' which indicates travel is allowed in both directions, a less-than symbol \\\\\\\'<\\\\\\\' which indicates travel is allowed only in an east-to-west direction, or a greater-than symbol \\\\\\\'>\\\\\\\' which indicates travel is allowed only in a west-to-east direction. For north-south streets, an asterisk again indicates travel is allowed in either direction, a lowercase \\\\\\\"vee\\\\\\\" character \\\\\\\'v\\\\\\\' indicates travel is allowed only in a north-to-south directions, and a caret symbol \\\\\\\'^\\\\\\\' indicates travel is allowed only in a south-to-north direction. A zero speed, indicating a closed road, is always followed by an asterisk. Input cities continue in this manner until a value of zero is specified for both the vertical and horizontal dimensions.
|
|
Output
For each input scenario, output a line specifying the integer number of blips of the shortest route, a space, and then the word \\\\\\\"blips\\\\\\\". For scenarios which have no route, output a line with the word \\\\\\\"Holiday\\\\\\\".
|
|
Sample Input
2 2 |
|
Sample Output
1715 blips |
|
Source
Mid-Central USA 2007
|
|
Recommend
teddy
|
/*
n*m的矩阵,然后求最短路,
。——。——。
| | |
。——。——。 | | |
。——。——。
从上往下每一行的边,一次输入然后*表示双向,<>^V分别表示上下左右单向联通
*/
//#include<bits/stdc++.h>
#include<iostream>
#include<stdio.h>
#include<string.h>
#define N 1100
#define INF 0x3f3f3f3f
using namespace std;
int mapn[N][N];//最大是21*21个点
int n,m;
int all;
int vis[N*N];
int dis[N*N];
int val;
char op[];
void dijkstra(int s){
memset(vis,,sizeof vis);
int i,j,minn,pos;
memset(vis,,sizeof(vis));
for(i = ; i<=all; i++)
dis[i] = mapn[s][i];
dis[s]=;
vis[s]=;
for(i = ; i<=all; i++){
minn = INF;
for(j = ; j<=all; j++){
if(dis[j]<minn && !vis[j]){
pos = j;
minn = dis[j];
}
}
vis[pos] = ;
for(j = ; j<=all; j++){
if(dis[pos]+mapn[pos][j]<dis[j] && !vis[j])
dis[j] = dis[pos]+mapn[pos][j];
}
}
}
int main()
{
//freopen("C:\\Users\\acer\\Desktop\\in.txt","r",stdin);
while(scanf("%d%d",&n,&m)!=EOF&&(n+m)){
/**********************处理输入***************************/
all=(n+)*(m+);
getchar();
/*初始化*/
for(int i=;i<=all;i++){
for(int j=;j<=all;j++){
mapn[i][j]=INF;
}
mapn[i][i]=;
}
for(int i=;i<=n*+;i++){
if(i%){//如果是奇数行,输入横着的边
/*
这一行的点是(i-1)*m+j
*/
for(int j=;j<=m;j++){
scanf("%d %s",&val,op);
//cout<<val<<" "<<op<<" ";
if(val==) continue;
if(op[]=='*'){
mapn[((i+)/-)*(m+)+j][((i+)/-)*(m+)+j+]=mapn[((i+)/-)*(m+)+j+][((i+)/-)*(m+)+j]=/val;
}
else if(op[]=='<'){
mapn[((i+)/-)*(m+)+j+][((i+)/-)*(m+)+j]=/val;
}
else if(op[]=='>'){
mapn[((i+)/-)*(m+)+j][((i+)/-)*(m+)+j+]=/val;
}
}
}
else{//为偶数行的时候
/*
这一行第一个点是(i-1)*m+j
*/
for(int j=;j<=m+;j++){
scanf("%d%s",&val,&op);
//cout<<val<<" "<<op<<" ";
if(val==) continue;
if(op[]=='*'){
mapn[(i/-)*(m+)+j][(i/)*(m+)+j]=mapn[(i/)*(m+)+j][(i/-)*(m+)+j]=/val;
}
else if(op[]=='^'){//上
mapn[(i/)*(m+)+j][(i/-)*(m+)+j]=/val;
}
else if(op[]=='v'){//下
mapn[(i/-)*(m+)+j][(i/)*(m+)+j]=/val;
}
}
}
getchar();
//cout<<endl;
}
/**********************处理输入***************************/
/*
for(int i=1;i<=all;i++){
for(int j=1;j<=all;j++){
cout<<mapn[i][j]<<" ";
}
cout<<endl;
}
*/
dijkstra();
if(dis[all]==INF) puts("Holiday");
else printf("%d blips\n",dis[all]);
}
return ;
}
Here We Go(relians) Again的更多相关文章
- HDU 2722 Here We Go(relians) Again (spfa)
Here We Go(relians) Again Time Limit : 2000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/ ...
- CSU 1857 Crash and Go(relians)(模拟)
Crash and Go(relians) [题目链接]Crash and Go(relians) [题目类型]模拟 &题解: 这就是要严格的按照题意说的模拟就好了,也就是:每次添加进来一个圆 ...
- hdu 2722 Here We Go(relians) Again (最短路径)
Here We Go(relians) Again Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Jav ...
- 【HDOJ】2722 Here We Go(relians) Again
根据矩阵建图,然后求最短路径. #include <cstdio> #include <cstring> #include <cstdlib> #define L ...
- HDU 2722 Here We Go(relians) Again
最短路,建图太麻烦,略过…… #include <cstdio> #include <cstring> #include <queue> const int INF ...
- Here We Go(relians) Again HDU2722
处理完输入就是很简单的一题 但是输入好难 勉强找到一种能看懂的... #include<iostream> #include<stdio.h> #include<str ...
- HDU 2722 Here We Go(relians) Again (最短路)
题目链接 Problem Description The Gorelians are a warlike race that travel the universe conquering new wo ...
- POJ 3653 & ZOJ 2935 & HDU 2722 Here We Go(relians) Again(最短路dijstra)
题目链接: PKU:http://poj.org/problem? id=3653 ZJU:problemId=1934" target="_blank">http ...
- 【转】最短路&差分约束题集
转自:http://blog.csdn.net/shahdza/article/details/7779273 最短路 [HDU] 1548 A strange lift基础最短路(或bfs)★254 ...
随机推荐
- windows 结束进程的详细过程
windows上如何结束进程的详细过程,下面附详细,图文说明 在cmd下,输入 netstat -ano|findstr 8080 //说明:查看占用8080端口的进程 在cmd下, ...
- eclipse中搜狗输入法中文状态下输出的全是英文
在eclipse中搜狗输入法变成了如图这样 在中文状态下,提示的全是中文. 查询到的解决方案: 快捷键ctrl+shift+E关闭搜狗智能英文.然而与eclipse中 Ctrl+shift+E 快捷键 ...
- 探索Java NIO
什么是NIO? java.nio全称java non-blocking IO,是指jdk1.4 及以上版本里提供的新api(New IO),NIO提供了与标准IO不同的IO工作方式. 核心部分: Ch ...
- 偏置-方差分解(Bias-Variance Decomposition)
本文地址为:http://www.cnblogs.com/kemaswill/,作者联系方式为kemaswill@163.com,转载请注明出处. 机器学习的目标是学得一个泛化能力比较好的模型.所谓泛 ...
- 我的第一个python web开发框架(4)——数据库结构设计与创建
小白做好前端html设计后,马上开始进入数据库结构设计步骤. 在开始之前,小白回忆了一下老大在公司里培训时讲过的数据库设计解说: 对于初学者来说,很多拿到原型时不知道怎么设计数据表结构,这是很正常的事 ...
- 21.Linux-写USB键盘驱动(详解)
本节目的: 根据上节写的USB鼠标驱动,来依葫芦画瓢写出键盘驱动 1.首先我们通过上节的代码中修改,来打印下键盘驱动的数据到底是怎样的 先来回忆下,我们之前写的鼠标驱动的id_table是这样: 所以 ...
- 在sqlserver2005/2008中备份数据库,收缩日志文件
---1.先备份数据库(含日志文件) use myhis go backup database myhis to disk='d:\myhis_rzbak' go ---2.设为简单恢复模式 use ...
- 一个scrapy框架的爬虫(爬取京东图书)
我们的这个爬虫设计来爬取京东图书(jd.com). scrapy框架相信大家比较了解了.里面有很多复杂的机制,超出本文的范围. 1.爬虫spider tips: 1.xpath的语法比较坑,但是你可以 ...
- 组件 layui 表单抓取数据四步走
注意事项: layui 中提交按钮是基于"监听"机制实现的. form.on() 的调用需置于 layui.use 的回调函数中. 末尾的 'return false' 不可或缺, ...
- swift实现与OC的混编
swift与OC的混编 现在写swift,很多的类库还不是很全,很多的第三方还是只有OC版的,这个时候swift想用,通常都是采用的swift和OC混编的方式.这里给大家演示一下混编是如何做的. sw ...