Description

贫穷的小A有一个梦想,就是到t国去一次穷游,但现实是残酷的。小A所在的世界一共有n(n<=500)
个国家,国家与国家之间总共有E(E<=50000)条道路相连,第i个国家对于进入它的外国人都要收取Bi
的费用,而小A家住在s国,他必须通过这些道路在各个国家之间中转最终到达t国(除非他运气够好
可以直接从s国到达t国)。但是贫穷的小A只剩下M(M<=100)元家底了,因此他必须精打细算旅途的
费用,同时小A对于t国实在太向往了,因此他希望能够走最短的路尽快到达t国。这个问题难倒了小
A,现在他请你帮他算一算他到达t国的最短路径有多长。

Input

第一行输入T(T<=10)表示有T组数据。每组数据第一行输入n、E、s、t、M,分别表示小A所在世界
的国家数、国家之间的总道路数、小A的国籍、小A向往的国家以及小A的家底;接下来一行输入n个正
整数Bi,表示第i个国家收取的过路费(由于小A是s国人,因此s国不会收取,但t国会);接下来输
入E行每行三个正整数u(1<=u<=n)、v(1<=v<=n)、w,表示u国和v国之间存在着一条长度为w的无
向边(可能有重边)。输入保证最终结果不会使int溢出。

Output

输出T行正整数,第i行表示第i组数据小A花费不超过M元到达t国的最短路。若小A无法到达t国,输
出-1.

Sample Input

3
2 2 1 2 10
20 10
1 2 1
1 2 2
3 1 1 3 10
1 1 1
2 3 1
3 3 1 3 10
1 11 1
1 2 1
1 2 3
2 3 1

Sample Output

1
-1
-1
#include<iostream>
#include<algorithm>
#include<string.h>
#include<vector>
#include<queue>
using namespace std;
struct country {int v, w;
};
vector <country> world[505];
struct vertex {int m, dis, v;};
struct mycompare
{
bool operator()( vertex a,vertex b)
{return a.dis > b.dis;
}
};
priority_queue<vertex,vector<vertex>,mycompare>arr;int main()
{int T, n, E, s, t, M, x, y, z;cin >> T;int cost[505];int distance[505][105];bool flag[505][105];while (T--){memset(distance, -1, sizeof(distance));memset(flag, true, sizeof(flag));cin >> n >> E >> s >> t >> M;for (int i = 1; i <= n; i++)cin >> cost[i];for (int i = 0; i < E; i++){cin >> x>> y >> z;country temp;temp.v = y;temp.w = z;world[x].push_back(temp);temp.v = x;world[y].push_back(temp);}vertex temp;temp.m = M; temp.dis = 0; temp.v = s; distance[temp.v][M] = 0;arr.push(temp);while (!arr.empty()){temp = arr.top();arr.pop();int p = temp.v;if (!flag[p][temp.m] || temp.dis > distance[temp.v][temp.m])continue;flag[p][temp.m] = false;for (int i = 0; i < world[p].size(); i++){int v = world[p][i].v;if (v == s) continue;if (temp.m >= cost[v] && (distance[v][temp.m - cost[v]] == -1 || temp.dis + world[p][i].w < distance[v][temp.m - cost[v]])){distance[v][temp.m - cost[v]] = temp.dis + world[p][i].w;vertex point;point.dis = temp.dis + world[p][i].w;point.m = temp.m - cost[v];point.v = v;arr.push(point);}}}int ans = 1000000; bool index=0;for (int i = 0; i <= M; i++)if (distance[t][i] != -1) {ans = min(ans, distance[t][i]);index = 1;}if (!index)  cout << -1 << endl;else cout << ans << endl;for (int i = 1; i <= n; i++)world[i].clear();}
}

1023穷游?“穷”游相关推荐

  1. 魔域手游安卓修改服务器地址,魔域互通端游手游架设

    魔域互通端游手游架设跟魔域端游的 新端 架设一样  服务端 部分 windos2008  64 安装vc运行库  .net4.0 魔域手游互通,无教程手工版自行解决.zip  解压到d盘出来 mysq ...

  2. 少儿编程--scratch编程--游来游去的鱼

    这是我们的一个实例分享---游来游去的小鱼. 代码非常的简单. 第一步:点击"1",在库里选择一个背景,在本案例中选择一个海底世界的背景. 第二步:点击"2", ...

  3. pyHook pyHook3 区别_英雄联盟手游和端游区别-lol手游手游和端游区别一览

    英雄联盟手游和端游区别是很多玩家都非常关注的内容,不少玩家都想了解一下手游和端游到底都有哪些区别,今天就为大家带来关于这个方面的具体介绍,通过下面的内容,来一起了解一下吧. 英雄联盟手游和端游区别 推 ...

  4. 手游页游和端游的服务端的架构与区别

    手游页游和端游的服务端本质上没区别,区别的是游戏类型. 类型1:卡牌.跑酷等弱交互服务端 卡牌跑酷类因为交互弱,玩家和玩家之间不需要实时面对面PK,打一下对方的离线数据,计算下排行榜,买卖下道具即可, ...

  5. 游戏开发:通过路径搜索优先级来进行补丁升级(从端游到手游)

    游戏开发:通过路径搜索优先级来进行补丁升级(从端游到手游) 在我们的游戏开发中,在线升级是必须要解决的需求,你不可能每出一个版本,就让用户去官网下载吧. 特别是资源的更新. 假设我们的游戏由两个东西组 ...

  6. 我的世界服务器物品如何虚转实,我的世界编辑器虚转实 | 手游网游页游攻略大全...

    发布时间:2016-02-21 我的世界是一款很好玩的沙盒游戏,在玩这款游戏的时候我们可能会用到一些常用的编辑器,小编为大家整理了最为常用的两个版本,并且提供了下载地址,有兴趣的朋友们请看看下面的我的 ...

  7. 未转变者怎么重置服务器,未转变者怎么把服务器关掉 | 手游网游页游攻略大全...

    发布时间:2017-09-18 我的世界1.9服务器大全 2016最新最好玩的服务器.下面就是我的世界1.9版本的服务器推荐啦!那要知道我的世界1.9版本上线也没有多长时间哦~所以服务器不是很多,资源 ...

  8. 方舟服务器显示队友位置,方舟如何看队友在哪 | 手游网游页游攻略大全

    发布时间:2015-12-16 无主之地:前传 联机看队友装备方法 怎么看队友装备 联机看队友装备方法:联机的时候,对着队友按Z,可以查看队友装备!发现不和谐的,直接踢了,不用问对方有没有作弊了. 标 ...

  9. 绝地求生 android版支持蓝牙吗,绝地求生怎么蓝牙耳机设置听脚步 | 手游网游页游攻略大全...

    发布时间:2017-01-03 声音调大之后,枪声.飞机.爆炸与开车声太大非常烦人,且脚步声也不是很清晰,那么究竟如何设置能让大家快速变为听声辩位高手呢?今天小编带来"UID13647447 ...

  10. 迷你世界维护服务器几点到几点,迷你世界服务器房间是什么 | 手游网游页游攻略大全...

    发布时间:2018-05-14 在迷你世界游戏中玩家可以自己创建房间然后邀请朋友一起玩,那么有时候会发现迷你世界创的房间朋友怎么找不到呢?还不是很清楚的玩家们,下面就一起来瞧瞧吧,一定不会让你失望的. ...

最新文章

  1. 数据中台应用实战50篇(二)-中台解决方案本质在解决什么问题?
  2. file.php https,使用HTTPS链接和php方法(file_get_contents,getimagesize)
  3. 【渝粤教育】国家开放大学2018年春季 0273-22T中国现代文学 参考试题
  4. 【POJ - 2942】Knights of the Round Table(点双连通分量,二分图判断奇环奇圈)
  5. usb协议规范_USB连接标准接口简述发布
  6. 揭开容器的神秘面纱:帮助初学者深入了解容器技术
  7. 杀掉php所有进程,杀死某个用户的所有进程
  8. 无人驾驶入门(基本流程)
  9. Python学习笔记三(文件操作、函数)
  10. c语言 sprintf_s 参数 通配符,Rust教程(翻译).doc
  11. 湖南省委短信平台改造方案
  12. 2020年生肖码表图_2020年十二生肖号码表 查询属相年龄岁数对照图表
  13. FW:nbsp;司马相如琴挑文君真相:劫色劫…
  14. Laravel学习记录--数据填充
  15. mac parallels desk 网络初始化失败
  16. 3.1 电磁干扰EMI
  17. 模拟登录上海交大Jaccount
  18. 浅谈电话机器人与人工坐席的优劣势
  19. 理解MMORPG、回合制、ARPG、SLG、Roguelike、卡牌、竞技类
  20. QT(6)-QStandardItemModel

热门文章

  1. 数据存储之Archiver、Unarchiver、偏好设置
  2. Frenet坐标系下横纵向轨迹决策规划(SL投影及ST投影)及Apollo决策算法解析
  3. 计算机仿真终审超期,机械类审稿时间短的北大核心期刊有哪些
  4. 常用电子元器件应用要点及识别方法
  5. LaTeX公式编辑教程
  6. [野狐行网游研究][三期四期][8.25更新]
  7. Java算法---发工资
  8. 2023 物联网毕业设计选题推荐 100例
  9. SMM--Spring
  10. Windows Api 封装 C++ 库