AcWing 4242. 货币兑换(SPFA or Bellman 判正权环)
题目连接
https://www.acwing.com/problem/content/description/4245/
http://poj.org/problem?id=1860
思路
根据题意我们可以知道,我们想求的是这个图中是否存在一个正权回路,让我们的钱变多了,那么我们建边的时候存储的信息就是终点v
、兑换汇率r
、服务费c
,初始的时候我们有V这么多的S货币,那么我们就看其能转化为其他不同的货币使得下一个点的货币数量增加(一开始除了S点的货币为v其余初始化为小于等于0),那么最后如果某一个点更新了n次那么说明出现了一个正权环,使得我们的钱变多了,那么对于判断是否存在正权图我们可以用SPFA
或者Bellman
或者Floyd
算法进行运算
代码
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
#include<vector>
#include<queue>
using namespace std;const int N = 1e2+10;struct Node{int v;double r,c;
};
vector<Node> E[N];
int n,m,s;
int cnt[N];
double dis[N],v;
bool vis[N];void spfa(){dis[s] = v;queue<int> que;que.push(s);while(!que.empty()){int t = que.front();que.pop();vis[t] = false;for(int i = 0,l = E[t].size();i < l; ++i) {int j = E[t][i].v;double r = E[t][i].r, c = E[t][i].c;double k = (dis[t] - c) * r;if(dis[j] < k){dis[j] = k;cnt[j] = cnt[t] + 1;if(cnt[j] >= n){//出现正权回路cout<<"YES"<<endl;return;}if(!vis[j]) que.push(j);}}}cout<<"NO"<<endl;
}int main()
{scanf("%d%d%d%lf",&n,&m,&s,&v);int a,b;double rab,cab,rba,cba;for(int i = 1;i <= m; ++i){scanf("%d%d%lf%lf%lf%lf",&a,&b,&rab,&cab,&rba,&cba);E[a].push_back({b,rab,cab});E[b].push_back({a,rba,cba});}spfa();return 0;
}
AcWing 4242. 货币兑换(SPFA or Bellman 判正权环)相关推荐
- AcWing 904. 虫洞(SPFA or Djakarta or bellman判负环)
题目连接 http://poj.org/problem?id=3259 思路 大概是想问我们能不能找到一个负环,那么再看一眼数据范围,500,感觉乱搞都能过,但是出题人很恶心啊,n的范围并不是500, ...
- 算法提高课-图论-负环-AcWing 1165. 单词环:spfa判正环、二分、01分数规划
文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: 如何建图? 这样建图.以样例举例.起点是前两个字母,终点是末尾两个字母,边权是字符串的长度. 我们求的是什么呢? 题目要求Σ边权Σ1 ...
- 算法提高课-图论-负环-AcWing 361. 观光奶牛:spfa判正环、负环、01分数规划、二分
文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: 题目要求ΣfiΣgi\frac{\Sigma{f_i}}{\Sigma{g_i}}ΣgiΣfi的最大值,这种问题称为01分数规 ...
- POJ 2240 Arbitrage(SPFA判正环)
POJ 2240 Arbitrage 题目大意 套利是指利用货币汇率的差异,将一种货币的一个单位转换为同一货币的多个单位.例如,假设1美元买0.5英镑,1英镑买10.0法国法郎,1法国法郎买0.21美 ...
- POJ1680 Currency Exchange SPFA判正环
转载来源:優YoU http://user.qzone.qq.com/289065406/blog/1299337940 提示:关键在于反向利用Bellman-Ford算法 题目大意 有多种汇币,汇 ...
- 4242. 货币兑换
Powered by:NEFU AB-IN Link 文章目录 4242. 货币兑换 题意 思路 代码 4242. 货币兑换 题意 见原题 思路 初始点为S,初始值为V,每次到下一个点,钱会变多或变少 ...
- *【POJ - 1860】Currency Exchange (单源最长路---Bellman_Ford算法判正环)
题干: Description Several currency exchange points are working in our city. Let us suppose that each p ...
- SPFA or bellman ford松弛法--单源最短路
问题概述:有编号1-n的n个站点,有m条公交车路线,公交车只从一个起点站直接到达终点站,是单向的且每条路线有它自己的车费,有P个人早上从1出发,他们要到达每一个公交站点,然后到了晚上再返回点1,求所有 ...
- POJ 3621 Sightseeing Cows(最优比率环+spfa的dfs判环优化)
题目链接 题目大意:给你一个有向图,每个点都有一个权值,每条边都有一个长度,需要找到一个各点权值和/各边长度和 最大的环出来,输出这个比值. 分析:假设结点权值为wiw_iwi,边的长度为lil_i ...
最新文章
- linux杀死tomcat进程6,Linux下启动停止查看杀死Tomcat进程(示例代码)
- react编译器jsxTransformer,babel
- flowable流程实例笔记(1)
- android中常见的错误及解决办法
- 使用.NET进行高效率互联网敏捷开发的思考和探索【一、概述】
- android 日历日期,android 日历 开始日期 与结束日期
- linux7dhcpd服务命令,CentOS7系统架设DHCP服务
- python爬虫ip_python爬虫数据采集ip被封一篇解决
- matlab根据数值大小聚类,[matlab聚类分析]请教高手:用matlab做聚类分析,节点数多于30个怎么画聚类图啊?...
- 基于单片机的语音小车设计
- 用华为手机拍照别直接按快门,先打开这个按钮,效果翻倍堪比单反
- ryzen linux 搭配显卡,R7 1700配什么显卡?AMD Ryzen7 1700搭配显卡推荐 (全文)
- 房东房源管理小程序开发功能
- 岌岌可危 中立之争决定云计算未来
- ftp服务器连接时间太长(耗时20s或40s)问题解决(超详细图文教程)
- 计算机网络论文2020年8000字,2020年计算机网络技术专业论文提纲模板.doc
- ReactiveX文档中文翻译
- sqlite3学习笔记
- C-DOCSIS上行信道
- 2019全国数学建模大赛c题出租车机场数据
热门文章
- pytorch中创建多个空的tensor、pycharm从自己写的.py中引用函数下面画红线等问题
- jQuery静态方法(each、map、isFunction, isWindow, isArray, .trim(), .holdReady())
- 使用JDBC增删改查
- MSFT_NetAdapter修改网卡名
- Python RE模块中search()和match()的区别
- EXTJS Date 的转换格式化字符
- Windows 7 下玩游戏不能全屏?
- 图解再谈ssh port forwarding-ssh隧道技术
- 【译】Serverless Jenkins with Jenkins X
- 一个前端er使用浏览器打印功能快速制作PDF简历