题目背景

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

题目描述

小明有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 18
1 10
1 2 2
1 3 5
1 4 1
2 5 12
2 6 14
3 5 6
3 6 10
3 7 4
4 5 13
4 6 12
4 7 11
5 8 3
5 9 9
6 8 6
6 9 5
7 9 10
8 10 5
9 10 2
输出样例#1:

Yes
1
输入样例#2:

5 5 2
1 3
1 4 5
1 2 5
输出样例#2:

No
2

说明

  • 数据说明
2<=n<=30
1<=k<=50
10<=m<=32767
1<=单次费用<=100
1<=x<y<=n
1<=a<b<=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<iostream>
#include<queue>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define MAXN 60
using namespace std;
queue<int>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,,sizeof(vis));
memset(dis,0x3f,sizeof(dis));
while(!que.empty()) que.pop();
que.push(x);
dis[x]=;vis[x]=;
while(!que.empty()){
int now=que.front();
que.pop();
vis[now]=;
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]]=;
que.push(to[i]);
}
}
}
}
int main(){
scanf("%d%d%d",&n,&m,&k);
scanf("%d%d",&s,&t);
for(int i=;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"<<endl<<m-dis[t];
return ;
}
else{
cout<<"No"<<endl;
for(int i=;i<=n;i++)
if(dis[i]<=m)
if(abs(i-t)<maxn){
ans=i;
maxn=abs(i-t);
}
cout<<ans;
}
}

洛谷 U6254 最低费用的更多相关文章

  1. 洛谷P3381 最小费用最大流

    费用流板子 还是一道板子题..先练练手 #include <bits/stdc++.h> #define INF 0x3f3f3f3f #define full(a, b) memset( ...

  2. 洛谷P4014 分配问题(费用流)

    题目描述 有 nn 件工作要分配给 nn 个人做.第 ii 个人做第 jj 件工作产生的效益为 c_{ij}cij​ .试设计一个将 nn 件工作分配给 nn 个人做的分配方案,使产生的总效益最大. ...

  3. 洛谷P4015 运输问题(费用流)

    题目描述 WW 公司有 mm 个仓库和 nn 个零售商店.第 ii 个仓库有 a_iai​ 个单位的货物:第 jj 个零售商店需要 b_jbj​ 个单位的货物. 货物供需平衡,即\sum\limits ...

  4. 洛谷P3381 最小费用最大流模板

    https://www.luogu.org/problem/P3381 题目描述 如题,给出一个网络图,以及其源点和汇点,每条边已知其最大流量和单位流量费用,求出其网络最大流和在最大流情况下的最小费用 ...

  5. 洛谷 [P3381] 最小费用最大流模版

    #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #i ...

  6. 洛谷P4014 分配问题【最小/大费用流】题解+AC代码

    洛谷P4014 分配问题[最小/大费用流]题解+AC代码 题目描述 有 n 件工作要分配给 n 个人做.第 i 个人做第 j 件工作产生的效益为c ij. 试设计一个将 n 件工作分配给 n 个人做的 ...

  7. 洛谷 P4016负载平衡问题【费用流】题解+AC代码

    洛谷 P4016负载平衡问题 P4014 分配问题[费用流]题解+AC代码 负载平衡问题 题目描述 GG 公司有n个沿铁路运输线环形排列的仓库,每个仓库存储的货物数量不等.如何用最少搬运量可以使 n ...

  8. 洛谷P4003 无限之环(infinityloop)(网络流,费用流)

    洛谷题目传送门 题目 题目描述 曾经有一款流行的游戏,叫做 Infinity Loop,先来简单的介绍一下这个游戏: 游戏在一个 n ∗ m 的网格状棋盘上进行,其中有些小方格中会有水管,水管可能在格 ...

  9. 洛谷 P4012 深海机器人问题【费用流】

    题目链接:https://www.luogu.org/problemnew/show/P4012 洛谷 P4012 深海机器人问题 输入输出样例 输入样例#1: 1 1 2 2 1 2 3 4 5 6 ...

随机推荐

  1. Project Euler:Problem 77 Prime summations

    It is possible to write ten as the sum of primes in exactly five different ways: 7 + 3 5 + 5 5 + 3 + ...

  2. Swift3.0中关于日期类的使用指引

    日期的处理在大大小小的iOS项目中都十分常见,随着Swift3.0正式版的即将推出,语法的改变让NSDate以及相关类的使用都与之前略有不同,这里将会对基于Swift3.0版本的NSDate及相关类的 ...

  3. 搜索分析(DFS、BFS、递归、记忆化搜索)

    搜索分析(DFS.BFS.递归.记忆化搜索) 1.线性查找 在数组a[]={0,1,2,3,4,5,6,7,8,9,10}中查找1这个元素. (1)普通搜索方法,一个循环从0到10搜索,这里略. (2 ...

  4. Asura监控---AsuraMonitor,阿修罗监控开源

    阿修罗Monitor是一个功能强大.灵活的监控系统. 系统安装简单,配置简单,相比zabbix, nagios,cacti,小米监控等都使用相当简单.只需要会写脚本,语言不限就可以实现任意监控需求. ...

  5. hiho一下第76周《Suzhou Adventure》

    我是菜鸡,我是菜鸡,我是菜鸡....重要的事说三遍 算是第一次做树形dp的题吧,不太难.. 园林构成一棵树,root为1,Hi从root出发,有k个园林必须玩,每个园林游玩后会得到权值w[i],最多玩 ...

  6. Docker修改hosts方法

    方法一: 直接进入容器中修改/etc/hosts 缺点:重启容器后,增加的内容会丢失 方法二: 制作镜像的时候,直接修改. 限制: 需要是root用户,需要在容器中安装sudo 增大了镜像大小 方法三 ...

  7. Python笔记(十)——操作SQLServer

    #encoding=utf-8 # 先通过如下命令安装模块 # pip install --trusted-host pypi.python.org pymssql # pip类似于RedHat里的y ...

  8. web前端处理订单待支付倒计时计算显示问题

    在商城类项目的时候,有很多待支付的订单,有时候在订单列表页面会分别显示倒计时,就是页面会有很多倒计时的订单. 处理方法: 1.调用后端接口拿到所有的订单,获取所有的倒计时订单,获取到期时间(尽量时间戳 ...

  9. Hadoop MapReduce编程 API入门系列之挖掘气象数据版本2(十)

    下面,是版本1. Hadoop MapReduce编程 API入门系列之挖掘气象数据版本1(一) 这篇博文,包括了,实际生产开发非常重要的,单元测试和调试代码.这里不多赘述,直接送上代码. MRUni ...

  10. 创建一个netcore2.0和angular的项目并运行起来

    netcore2.0发布了,喜大普奔. 我们先下载SDK,请看张善友老师的这篇博客 http://www.cnblogs.com/shanyou/p/7363037.html 下载完之后 我用的vs2 ...