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 ...
随机推荐
- CSV导出大量数据
$csvname = $csvname . '.csv'; header('Content-Type: application/vnd.ms-excel;charset=GB2312'); heade ...
- 新书发布《每天5分钟玩转Docker容器技术》
后台不时收到关于纸质版教程书籍的询问,今天终于可以给大家一个交代了. <每天5分钟玩转Docker容器技术>现已在各大书城上架. 比较了一下,目前京东上最实惠:https://item.j ...
- 新版本mac 无法打开第三方应用
新版本mac 没有任何应用可以打开的这个选项 现在解决方法已经找到 特此标记一下 1打开终端 2 输入 sudo spctl --master-disable 3.打开系统设置的中的安全即可出现
- jQuery: Callbacks
jQuery 中提供了一个Callback的工具类Callbacks,它提供了一个Callback Chain.使用它可以在一个chain上来执行相关操作.它也是jQuery中的ajax, Defer ...
- Delphi系列书籍pdf 118本 网友吐血整理
第一步:进入官网首页http://bulo.hujiang.com/home/ 第二部:home/替换u/779988/diary/627936/ 来自沪江部落
- Hive基础(1)---Hive是什么
1. Hive是什么 Hive是基于Hadoop的数据仓库解决方案.由于Hadoop本身在数据存储和计算方面有很好的可扩展性和高容错性,因此使用Hive构建的数据仓库也秉承了这些特性. 这是来自官方的 ...
- An Introduction to Variational Methods (5.3)
从之前的文章中,我们已经得到了所有需要求解的参数的优化分布的形式,分别为: 但是,我们从这些分布的表达式中(参见之前的文章),可以发现这些式子并不能够直接求解.这是因为各个参数之间相互耦合,从而导 ...
- Reshape the Matrix
In MATLAB, there is a very useful function called 'reshape', which can reshape a matrix into a new o ...
- (Java后端 Java web)面试时如何展示自己非技术方面的能力(其实就是综合能力)
这篇文章的适用范围其实不仅限于Java后端或Java Web,不过其中有些是拿这方面举例的,在其它方面,大家可以举一反三,应该也能得到些启示. 我们在面试时,会发现有些候选人技术不错,比如在Java ...
- CSS图片垂直居中方法整理集合
原帖链接:http://bbs.blueidea.com/thread-2666987-1-1.html 1.因为Opera,FF3,IE8均支持display:talbe;这些特性了,因此改进的办法 ...