博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
洛谷 U6254 最低费用
阅读量:5161 次
发布时间:2019-06-13

本文共 2057 字,大约阅读时间需要 6 分钟。

题目背景

小明暑假去国外游玩,到了最后一天,却发现自己的钱还不一定够去机场,于是他开始对国外特殊的交通方式进行研究,但是他发现路段的错综复杂使他头脑昏花,于是他打开电脑,希望你去帮助他(不求上进的小明)。

题目描述

小明有m元,他去机场必须使用一种国外特有的交通方式,是这样的:

有n个站点,k种车,每个站点都可以到达特定的一些站点,所用的费用自然也是不同的,每个站点都有着足够的车,可以让你随到随走。现在知道小明在x站点,他要去y站点,以及每个站点到达某些站点的费用(一个站点不是其他站点都可以到),请问以小明手上的钱,能不能到达y站点。

以上在现实中纯属瞎扯[根本没有这种这种方法]

输入输出格式

输入格式:

 

共k+2行,第一行是三个整数n,m,k,含义如题,第二行是x和y,代表小明所在的站点和目标站点,然后的k行每行都有三个数,a,b,c,代表从a站点到b站点需要花费c元。

 

输出格式:

 

两行,如果小明的钱够从x站点到y站点就输出“Yes”,下一行是小明剩余的钱数。

如果x站点无法到达y站点或小明的钱不够去y站点就输出“No”,下一行是以小明现在的钱数能到达的离y站点最近的一个站点。

 

输入输出样例

输入样例#1:
10 20 181 101 2 21 3 51 4 12 5 122 6 143 5 63 6 103 7 44 5 134 6 124 7 115 8 35 9 96 8 66 9 57 9 108 10 59 10 2
输出样例#1:
Yes1
输入样例#2:
5 5 21 31 4 51 2 5
输出样例#2:
No2

说明

  • 数据说明
2<=n<=301<=k<=5010<=m<=327671<=单次费用<=1001<=x
<=n1<=a
<=n
  • 样例1说明 从1到3 ans=5

从3到5 ans=11

从5到8 ans=14

从8到10 ans=19

  • 样例2说明

1无法到3

只能到2或4,根据以下注备,输出No'/n'2。

/n=换行符。

  • 注备

如果小明哪都去不了就输出“No”和他所在的站点

如果y=3,小明无法到达3站点,但是却可以到达2和4站点,优先输出2。

a<b,说明序号低的站点可以到达序号高的站点,反之不行

思路:spfa

 

#include
#include
#include
#include
#include
#define MAXN 60using namespace std;queue
que;int n,m,k,s,t,tot;int dis[MAXN],vis[MAXN],ans,maxn=0x7f7f7f7f;int to[MAXN],head[MAXN],net[MAXN],cap[MAXN];void add(int u,int v,int w){ to[++tot]=v; net[tot]=head[u]; cap[tot]=w; head[u]=tot;}void spfa(int x){ memset(vis,0,sizeof(vis)); memset(dis,0x3f,sizeof(dis)); while(!que.empty()) que.pop(); que.push(x); dis[x]=0;vis[x]=1; while(!que.empty()){ int now=que.front(); que.pop(); vis[now]=0; for(int i=head[now];i;i=net[i]) if(dis[to[i]]>dis[now]+cap[i]){ dis[to[i]]=dis[now]+cap[i]; if(!vis[to[i]]){ vis[to[i]]=1; que.push(to[i]); } } }}int main(){ scanf("%d%d%d",&n,&m,&k); scanf("%d%d",&s,&t); for(int i=1;i<=k;i++){ int x,y,z; scanf("%d%d%d",&x,&y,&z); add(x,y,z); } spfa(s); if(dis[t]<=m){ cout<<"Yes"<
<

 

 

 

转载于:https://www.cnblogs.com/cangT-Tlan/p/7470657.html

你可能感兴趣的文章
【更新】智能手机批量添加联系人
查看>>
NYOJ-128前缀式计算
查看>>
深入理解 JavaScript 事件循环(一)— event loop
查看>>
Hive(7)-基本查询语句
查看>>
注意java的对象引用
查看>>
C++ 面向对象 类成员函数this指针
查看>>
NSPredicate的使用,超级强大
查看>>
自动分割mp3等音频视频文件的脚本
查看>>
判断字符串是否为空的注意事项
查看>>
布兰诗歌
查看>>
js编码
查看>>
Pycharm Error loading package list:Status: 403错误解决方法
查看>>
steps/train_sat.sh
查看>>
转:Linux设备树(Device Tree)机制
查看>>
iOS 组件化
查看>>
(转)Tomcat 8 安装和配置、优化
查看>>
(转)Linxu磁盘体系知识介绍及磁盘介绍
查看>>
tkinter布局
查看>>
命令ord
查看>>
Sharepoint 2013搜索服务配置总结(实战)
查看>>