老S的旅行计划

老S在某城市生活的非常不自在,想趁着ICPC举办期间在省内转转。已知老S所在的省有N个城市,M条无向边(对于某一对结点可能出现重边)。由于省内的交通相当糟糕,通过某条边所需要花费的时间受到一天中不同时刻的影响。此外对于某一时刻(一天24小时的任意一个整点算一个时刻),从任何方向通过无向边所需要的时间相同。现在老S想请你帮他规划一下旅行路线。

Input

第一行输入为一个整数T表示测试个数T

对于每一个测试的第一行为3个整数N,M,K,其中K表示老S的询问数

之后有2M行,一组2行共M组。每组第一行是两个整数x,y表示第x个城市与第y个城市之间有一条无向边。

每组第二行有24个整数cost[i](0<=i<=23)表示在第i个时刻通过这条无向边需要消耗的时间(单位为小时)。并且保证cost[i]<=coust[i+1]+1(0<=i<=22)且cost[23]<=cost[0]+1。

之后有K每行有两个整数D和S表示询问,从1号城市的第S个时刻出发,最终目的地为城市D所需要最少几个小时,此外如果老S不能到达目标城市则输出-1。

Limit:

1 <=x, y<=N.

1 <=all Cost values<=50.

1 <=D<=N.

0 <=S<=23.

1 <=T<=100.

2 <=N<= 20.

1 <=M<=100.

1 <=K<= 100.

Output

对于任意一个样例输出仅有一行包括"Case #x: "其中x表示第x个样例,之后有K个整数用空格分隔开,分别表示老S的K个询问的答案。

Sample Input

3
3 3 2
1 2
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 3
3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
2 3
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
2 1
3 3
3 1 2
1 2
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
2 2
3 4
3 3 3
1 2
7 23 23 25 26 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8
1 3
10 11 15 26 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11
2 3
7 29 28 27 26 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8
2 14
3 3
3 21

Sample Output

Case #1: 1 2
Case #2: 1 -1
Case #3: 17 26 13

思路:变形dijkstra

代码:

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
const int N=105;
const int inf=0x3f3f3f;
int mp[N][N][25],dis[N],vis[N],ans[N];
int n,m,k,d,s;
void dij()
{for(int i=0;i<=n;i++){dis[i]=inf;vis[i]=0;}dis[1]=0;for(int i=1;i<=n;i++){int u=0,minn=inf;for(int j=1;j<=n;j++)if(!vis[j]&&dis[j]<minn){minn=dis[j];u=j;}vis[u]=1;for(int j=1;j<=n;j++)if(!vis[j]&&dis[u]+mp[u][j][(s+dis[u])%24]<dis[j])dis[j]=dis[u]+mp[u][j][(s+dis[u])%24];}
}
int main()
{int T,t=1;scanf("%d",&T);while(T--){scanf("%d%d%d",&n,&m,&k);memset(mp,inf,sizeof(mp));for(int i=0;i<m;i++){int u,v,x;scanf("%d%d",&u,&v);for(int j=0;j<24;j++){scanf("%d",&x);if(x<mp[u][v][j])mp[u][v][j]=mp[v][u][j]=x;}}for(int i=0;i<k;i++){scanf("%d%d",&d,&s);dij();if(dis[d]==inf)ans[i]=-1;else ans[i]=dis[d];}printf("Case #%d:",t++);for(int i=0;i<k;i++)printf(" %d",ans[i]);printf("\n");}return 0;
}

FZU - 2209 老S的旅行计划 (dijkstra)相关推荐

  1. COGS 2. 旅行计划

    2. 旅行计划 ★☆   输入文件: djs.in   输出文件: djs.out   简单对比 时间限制:3 s   内存限制:128 MB 过暑假了,阿杜准备出行旅游,他已经查到了某些城市的两两之 ...

  2. 【题解】【AcWing】1507. 旅行计划

    1507. 旅行计划 原题传送:AcWing 1507. 旅行计划 给定一张地图,包含 N N N 个城市, M M M 条高速公路. 城市之间都能相互连通. 每条高速公路的长度和走该条公路的花费都是 ...

  3. 牛客ACM赛 B [小a的旅行计划 ]

    链接 B 小a的旅行计划 把\(n\)个数中选任意数分成\(a,b\)两个集合,集合无区别,要求不包含且有交,求方案数.\(n\leq 10^{13}\) 首先讨论\(a,b\)并集是否为全集: 若是 ...

  4. 【拓扑排序】【DP】旅行计划(luogu 1137)

    旅行计划 luogu 1137 题目大意: 有一堆点,之间连接着一些边(有向),保证无环,现在要求出从任意地方出发到所有点的最长路(出发点不一定相同) 原题: 题目描述 小明要去一个国家旅游.这个国家 ...

  5. 51nod 1273 旅行计划——思维题

    某个国家有N个城市,编号0 至 N-1,他们之间用N - 1条道路连接,道路是双向行驶的,沿着道路你可以到达任何一个城市.你有一个旅行计划,这个计划是从编号K的城市出发,每天到达一个你没有去过的城市, ...

  6. 丽思卡尔顿游轮正式加入万豪旅享家旅行计划

    上海2021年12月9日 /美通社/ -- 万豪国际集团旗下享誉盛名的的旅行计划万豪旅享家(Marriott Bonvoy®)近日宣布,丽思卡尔顿游轮于2021年11月9日起正式加入该计划.丽思卡尔顿 ...

  7. 动态规划+vector解旅行计划问题

    动态规划+vector解旅行计划问题 题目描述 小明要去一个国家旅游.这个国家有#N个城市,编号为1至N,并且有M条道路连接着,小明准备从其中一个城市出发,并只往东走到城市i停止. 所以他就需要选择最 ...

  8. 2023北京旅行计划 2023带父母北京旅行计划

    2023北京旅行计划 2023带父母北京旅行计划 一.概述 2023年开始啦,疫情也差不多告别一段落. 准备安排父母来我工作的城市 --- 北京,旅行一番,逛一逛,看一看. 大致的事项:1. 体检 : ...

  9. 从零开始学微信小程序开发:6 旅行计划调查

    小程序对HTML5表单及表单元素进行了封装,提供了丰富的表单组件. 6.1 用form组件收集信息 form(表单)也是前端视图层与后端服务层交互过程中最重要的信息来源. 小程序的form组件具有一些 ...

最新文章

  1. Python使用tpot获取最优模型、将最优模型应用于交叉验证数据集(5折)获取数据集下的最优表现,并将每一折(fold)的预测结果、概率、属于哪一折与测试集标签、结果、概率一并整合输出为结果文件
  2. html语言字体是否依赖客户端,【前端面试】HTML5+CSS3初级面试1
  3. 数码之下 - 一道选择题讨论采样定理
  4. Android根据baidu Android定位SDK实现定位
  5. 算法-动态规划(1)
  6. cent os数据库安装
  7. nginx全局内存缓存
  8. linux的底层文件i o,Linux 文件I/O操作
  9. 从新手机到老股票 闲鱼为何会沦为骗子与营销的新平台?
  10. python实例化对象是什么意思_请帮我理解python对象的实例化.
  11. java ee打印功能_Java EE:异步构造和功能
  12. 为什么简单的删除集合中的元素竟然报错了?
  13. k8s pod里访问不到外部ip_K8S容器网络如何实现通信?
  14. android 6.0适应的机型,提升用户体验 可升Android 6.0机型盘点
  15. “大数据标准”征稿通知
  16. allegro中焊盘的设置
  17. java中数据成员的初始化问题
  18. python fun函数、求4x4整型数组的主对角线元素的和_python中多维数组中列major的numpy整形...
  19. Win-MASM64汇编语言-标志寄存器(EFLAGS/PSW/PUSHF/POPF)
  20. kafka的延迟操作-pull操作详解

热门文章

  1. 虚拟计算机可以开机吗,电脑开机后会提示虚拟空间太低怎么办
  2. 中学教学参考期刊点评_版面费_审稿
  3. CI3.* 获取控制器名、方法名
  4. 百胜中国西南供应链支持中心落户成都崇州
  5. 第一章 DirectX 计算机图形学(下)
  6. 冰箱什么品牌最好排名前十名2023 冰箱哪个牌子好质量好性价比高
  7. 互相之间吹吹水,聊聊古今中外,感慨生不逢时,如果再小个十几年,一定不做程序员(Ajax的介绍)
  8. WIN10切换UOS系统
  9. 小苗与大树的精选谈话笔记
  10. 关于入职字节跳动之后加班写到快十二点 拿到offer的快乐