题目背景

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

题目描述

小明有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. Eclipseproject出现红叉

    通过import导入包的时候往往会出现红叉的情况.但又没有错:这样的情况能够这样解决 1.选中项目.按Alt键和Enter键 2.选Andriod,在右側的版本号信息里选择一个不同的版本号,如原来默认 ...

  2. 表格td内容过多时,td显示省略号,鼠标移入显示全部内容。

    转自:https://blog.csdn.net/weixin_42193908/article/details/80405014 两种方式显示: 1.title方式显示: <!DOCTYPE ...

  3. php 判断字符串包含中文(转)

    $str = "测试中文"; echo $str; echo "<hr>"; //if (preg_match("/^[".ch ...

  4. SQL Server的自动备份设置及排错记事

    1.启动 SQL Server Management Studio管理器,登录进去. 2.在左侧可以看到这个,我们展开“管理”. 3.展开“管理”后,我们在“维护计划”项目上单击右键,在弹出菜单里选择 ...

  5. c语言递归讲解分析

    C语言允许函数调用它自己,这种调用的过程称为"递归(recursion)" 举例说明,如下代码: #include <stdio.h> void up_and_down ...

  6. 一个域名如何解析到多个ip地址

    一.域名解析多ip实例 简单一句话: dns 解析时多添加几个不同IP的A记录 例如: 上图中我给域名解析到两个不同的ip,大概等十分钟后我们ping 一下的结果如下 可以看到已经实现了一个域名解析到 ...

  7. 09-JavaScript高级

    今日知识 1. Dom(文档对象模型) 2. Bom(浏览器对象模型) 3. 总结 Dom 1. 获取id为div1的元素对象. * var result=document.getElementByI ...

  8. 软件需求规范说明 (Software Requirements Specification, 简称SRS)

    GB/T 9385-2008 笔记 为了形成确定和完备的规格说明, 我们需要明确 软件的顾客希望得到什么; 软件的供方理解用户想要什么; 4.2 SRS的基本性质 SRS是对在具体环境中执行确定功能的 ...

  9. BZOJ 1531 二进制优化多重背包

    思路: 讲道理我应该写单调队列优化多重背包的 但是我不会啊 但是我现在! 还不会啊 我就写了个二进制优化的.. 过了 //By SiriusRen #include <cstdio> #i ...

  10. BZOJ 1443 二分图博弈 网络流

    思路: 二分图博弈嘛 找到最大匹配的必须点 跑个网络流 前后DFS一遍 //By SiriusRen #include <queue> #include <cstdio> #i ...