题意:

      从左上角走到右下角,有的最短时间,每段路径的长度都是2520,每段上都有自己的限制速度,方向。

思路:

     直接写就行了,就是个最短路,权值是2520/限制,输入的时候细心点就行了。

#include<stdio.h>
#include<string.h>
#include<queue> #define N_node 500 + 50
#define N_edge 2000 + 200
#define INF 1000000000

using namespace
std; typedef struct
{
int
to ,next ,cost;
}
STAR; STAR E[N_edge];
int
list[N_node] ,tot;
int
s_x[N_node] ,mark[N_node]; void add(int a ,int b ,int c)
{

E[++tot].to = b;
E[tot].cost = c;
E[tot].next = list[a];
list[a] = tot;
} void
Spfa(int s ,int n)
{
for(int
i = 0 ;i <= n ;i ++)
s_x[i] = INF ,mark[i] = 0;
s_x[s] = 0;
mark[s] = 1;
queue<int>q;
q.push(s);
while(!
q.empty())
{
int
xin ,tou;
tou = q.front();
q.pop();
mark[tou] = 0;
for(int
k = list[tou] ;k ;k = E[k].next)
{

xin = E[k].to;
if(
s_x[xin] > s_x[tou] + E[k].cost)
{

s_x[xin] = s_x[tou] + E[k].cost;
if(!
mark[xin])
{

mark[xin] = 1;
q.push(xin);
}
}
}
}
return ;
} int main ()
{
int
i ,j ,n ,m ,num;
char
str[10];
while(~
scanf("%d %d" ,&n ,&m) && n + m)
{
int
mm = m + 1 ,nn = n + 1;
memset(list ,0 ,sizeof(list)) ,tot = 1;
for(
i = 1 ;i <= nn ;i ++)
{
for(
j = 1 ;j <= m ;j ++)
{
int
now = (i - 1) * mm + j;
scanf("%d %s" ,&num ,str);
if(!
num) continue;
num = 2520 / num;
if(
str[0] == '*') add(now ,now + 1 ,num) ,add(now + 1 ,now ,num);
if(
str[0] == '>') add(now ,now + 1 ,num);
if(
str[0] == '<') add(now + 1 ,now ,num);
}
if(
i <= n)
for(
j = 1 ;j <= mm ;j ++)
{

scanf("%d %s" ,&num ,str);
int
now = (i - 1) * mm + j;
if(!
num) continue;
num = 2520 / num;
if(
str[0] == '*') add(now ,now + mm ,num) ,add(now + mm ,now ,num);
if(
str[0] == '^') add(now + mm ,now ,num);
if(
str[0] == 'v') add(now ,now + mm ,num);
}
}

Spfa(1 ,nn * mm);
if(
s_x[nn * mm] == INF) printf("Holiday\n");
else
printf("%d blips\n" ,s_x[nn * mm]);
}
return
0;
}

hdu2722 简单最短路,处理好输入就行的更多相关文章

  1. Verilog学习笔记简单功能实现(七)...............接口设计(并行输入串行输出)

    利用状态机实现比较复杂的接口设计: 这是一个将并行数据转换为串行输出的变换器,利用双向总线输出.这是由EEPROM读写器的缩减得到的,首先对I2C总线特征介绍: I2C总线(inter integra ...

  2. Java输入几行字符串

    查找书籍 给定n本书的名称和定价,本题要求编写程序,查找并输出其中定价最高和最低的书的名称和定价. 输入格式: 输入第一行给出正整数n(<10),随后给出n本书的信息.每本书在一行中给出书名,即 ...

  3. 2019-11-29-dotnet-获取指定进程的输入命令行

    title author date CreateTime categories dotnet 获取指定进程的输入命令行 lindexi 2019-11-29 08:35:11 +0800 2019-0 ...

  4. 2019-8-31-dotnet-获取指定进程的输入命令行

    title author date CreateTime categories dotnet 获取指定进程的输入命令行 lindexi 2019-08-31 16:55:58 +0800 2019-0 ...

  5. dotnet 获取指定进程的输入命令行

    本文告诉大家如何在 dotnet 获取指定的进程的命令行参数 很多的程序在启动的时候都需要传入参数,那么如何拿到这些程序传入的参数? 我找到两个方法,一个需要引用 C++ 库支持 x86 和 x64 ...

  6. 输入n行整数,每行的个数不确定,整数之间用逗号分隔

    /*===================================== 输入n行整数,每行的个数不确定. 每行内部两个数之间用逗号隔开. 例如输入数据如下: 6 1,3,5,23,6,8,14 ...

  7. Chrome控制台输入多行js

    Chrome控制台输入多行js 分类: chrome2013-09-08 09:40 342人阅读 评论(0) 收藏 举报 控制台 Chrome控制台中回车默认是执行,要想输入换行,应按Enter+S ...

  8. ruby中输入命令行编译sass(ruby小白)

    Ruby(或cmd中)输入命令行编译sass步骤如下: (1)举例而言:首先在F盘下建立一个总文件夹,比如test文件夹:其次在该文件夹下建立html,images,js,sass等文件夹. (2)在 ...

  9. 输入3行字符串/定义flag/while/字符串后要加空格符

    int i = 0,j = 0; for(; i < 3; i++) { gets(a[i]); }//输入3行字符串 bool flag = true; while语句的语义是:计算表达式的值 ...

随机推荐

  1. Java I/O流 05

    I/O流·文件递归 统计该文件夹的大小 * 需求:从键盘就收一个文件夹路径,统计该文件夹的大小 package com.heima.test; import java.io.File; import ...

  2. java安全初学之动态代理

    前言:作为安全人员,代理大家用的都很多,那什么是java中的动态代理呢?事实上,java中的"动态"也就意味着使用了反射,因此动态代理是基于反射机制的一种代理模式. 简介: 代理是 ...

  3. Go语言中利用append巧妙的删除slice切片中的元素

    package main import ( "fmt" ) //删除函数 func remove(s []string, i int) []string { return appe ...

  4. C# 获取Word文本高亮和背景(附vb.net代码)

    Word中的文本高亮和背景是通过不同方法来设置的.文本高亮(Text Highlight Color)是通过[字体]中的快速工具栏设置:文本背景(Text Background/Shading)是通过 ...

  5. codefoces D. Phoenix and Science

    原题链接:https://codeforc.es/problemset/problem/1348/D 题意:给你一个体重为一克的细菌(它可以每天进行一次二分裂即一分为二体重均分:晚上体重增加1克)求最 ...

  6. PTA 中序输出度为2的结点

    6-10 中序输出度为2的结点 (10 分)   本题要求实现一个函数,按照中序遍历的顺序输出给定二叉树中度为2的结点. 函数接口定义: void InorderPrintNodes( BiTree ...

  7. 在Windows下配置Linux远程开发环境

    在Windows下配置Linux远程开发环境 欢迎光临我的个人博客 https://source.chens.life/Configure-Linux-remote-development-envir ...

  8. Android Studio 如何在TextView中设置图标并按需调整图标大小

    •任务 相信大家对这张图片都不陌生,没错,就是 QQ动态 向我们展示的界面. 如何实现呢? •添加文字并放入图标 新建一个 Activity,取名为 QQ,Android Studio 自动为我们生成 ...

  9. Android Studio 报错:你的主机中的软件中止了一个已建立的连接

    •解决方案 关闭电脑的移动热点 关闭后,build 就不会报错了. 等 build 好了后,重新打开移动热点,再次 build 一就不会报错.

  10. Python fire库使用

    1.前要fire是python中用于生成命令行界面(Command Line Interfaces, CLIs)的工具 不需要做任何额外的工作,只需要从主模块中调用fire.Fire() 它会自动将你 ...