题目链接:https://vjudge.net/problem/POJ-1860

大致题意:有不同的货币,有很多货币交换点,每个货币交换点只能两种货币相互交换,有佣金C,汇率R。
每次交换算一次操作,问能不能经过一系列操作使得本来的货币的本金数额变大。
思路:相当于图,“一系列操作使得本金数额变大”说明有一个正的回路,能使得某种货币的数额增大,那么,
只要有这一个正的回路,那么我们一定可以让某种货币的数额变为无穷大,那么本来的货币的本金数额变大是一定的,
所有,我们只需要判断图中是否出现了一个正回路,有的话说明可以,一个没有说明都是负环,说明不能。
(这里有一个误区,只判断一次货币交换情况及就判断,可能A货币换成B货币的佣金很大或者汇率很低,那么只要我们有一个正环,
使得B的货币数额变为正无穷大,那么经过一系列操作后最后A的货币数额一定是增大的)
有负环,这里用bellman_ford算法也可以通过。

 #include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdio>
#include <string>
#include <vector>
using namespace std; typedef long long LL;
#define inf (1LL << 30) - 1
#define rep(i,j,k) for(int i = (j); i <= (k); i++)
#define rep__(i,j,k) for(int i = (j); i < (k); i++)
#define per(i,j,k) for(int i = (j); i >= (k); i--)
#define per__(i,j,k) for(int i = (j); i > (k); i--) const int N = ;
int n,m,s;
double v;
int U,V;
double Ruv,Cuv,Rvu,Cvu;
double value[N]; struct node{
int u,v;
double r,c;
}; vector<node> E; void input(){ rep(i,,m){
cin >> U >> V >> Ruv >> Cuv >> Rvu >> Cvu;
E.push_back( node{U,V,Ruv,Cuv} );
E.push_back( node{V,U,Rvu,Cvu} );
}
} bool bellman_ford(){ value[s] = v; //其他的货币数额都为0,s的货币金额为V bool flag = true;
rep(i,,n){
flag = false;//每次赋值false,检测下面循环还能不能进行更新操作
for(int j = ; j < E.size(); j++){//遍历所有交换情况
//如果A->B 能使得B的货币金额变大,就更新
if(value[E[j].v] < (value[E[j].u] - E[j].c) * E[j].r){
value[E[j].v] = (value[E[j].u] - E[j].c) * E[j].r;
} flag = true;//进行了更新操作
}
if(!flag) break;//无法再进行更新操作
} //如果出现A->B 能使得B的货币金额变大,说明有一个正环
for(int j = ; j < E.size(); j++){
if(value[E[j].v] < (value[E[j].u] - E[j].c) * E[j].r) return true;
}
//遍历所有,都没出现正环,说明只有负环
return false;
} int main(){ ios::sync_with_stdio(false);
cin.tie(); cin >> n >> m >> s >> v;
input();
if (bellman_ford()) cout << "YES" << endl;
else cout << "NO" << endl; getchar();getchar();
return ;
}

kuangbin专题专题四 Currency Exchange POJ - 1860的更多相关文章

  1. (最短路 SPFA)Currency Exchange -- poj -- 1860

    链接: http://poj.org/problem?id=1860 Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 2326 ...

  2. Currency Exchange POJ - 1860 (spfa)

    题目链接:Currency Exchange 题意: 钱的种类为N,M条命令,拥有种类为S这类钱的数目为V,命令为将a换成b,剩下的四个数为a对b的汇率和a换成b的税,b对a的汇率和b换成a的税,公式 ...

  3. Currency Exchange POJ - 1860 (spfa判断正环)

    Several currency exchange points are working in our city. Let us suppose that each point specializes ...

  4. Currency Exchange - poj 1860

    Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 22111   Accepted: 7986 Description Seve ...

  5. Currency Exchange POJ - 1860 spfa判断正环

    //spfa 判断正环 #include<iostream> #include<queue> #include<cstring> using namespace s ...

  6. poj - 1860 Currency Exchange Bellman-Ford 判断正环

    Currency Exchange POJ - 1860 题意: 有许多货币兑换点,每个兑换点仅支持两种货币的兑换,兑换有相应的汇率和手续费.你有s这个货币 V 个,问是否能通过合理地兑换货币,使得你 ...

  7. 最短路(Bellman_Ford) POJ 1860 Currency Exchange

    题目传送门 /* 最短路(Bellman_Ford):求负环的思路,但是反过来用,即找正环 详细解释:http://blog.csdn.net/lyy289065406/article/details ...

  8. POJ 1860 Currency Exchange (最短路)

    Currency Exchange Time Limit:1000MS     Memory Limit:30000KB     64bit IO Format:%I64d & %I64u S ...

  9. POJ 1860 Currency Exchange / ZOJ 1544 Currency Exchange (最短路径相关,spfa求环)

    POJ 1860 Currency Exchange / ZOJ 1544 Currency Exchange (最短路径相关,spfa求环) Description Several currency ...

随机推荐

  1. vb.net 对字符串中的括号匹配进行判断,容许嵌套

    '   括号检查 '     括号共有四种:  1(英文圆括号),2(中文圆括号),3[方括号],4{花括号} '      要左右匹配(可以嵌套) Private Shared Function i ...

  2. Web中线程与IIS线程池自动回收机制

    开发Web项目后,部署到 IIS上 ,运行一直稳定,当Web程序中加入了定时任务,或者线程之类的机制后,第二天发现悲催了,定时任务并没有执行,此时重新登录一下网站,定时任务又重新执行.原来IIS默认有 ...

  3. 安装-supervisor

    centos 7.xx 1.#yum install python-setuptools 2.#easy_install supervisor 3.# vim /etc/supervisord.con ...

  4. MySQL 执行插入报错 - Incorrect string value: '\xE4\xB8\xAD\xE6\x96\x87' for column 'name' at row 1

    报错的原因就是在执行插入时对Name这个字段被赋予了错误的字符串值:’\xE4\xB8\xAD\xE6\x96\x87’ 实际上就函数里面的变量接收到的值编码格式跟它定义的不一致.  使用navica ...

  5. Idea 进行断点调试的 快捷键

    快捷键 功能描述F8 单步调试,不进入函数内部F7 单步调试,进入函数内部Shift+F7 选择要进入的函数Shift+F8 跳出函数Alt+F9 运行到断点Alt+F8 执行表达式查看结果F9 继续 ...

  6. linux nc 命令详解

    linux nc命令使用详解 功能说明:功能强大的网络工具语 法:nc [-hlnruz][-g<网关...>][-G<指向器数目>][-i<延迟秒数>][-o&l ...

  7. 解决上传文件或图片时选择相同文件无法触发change事件的问题

    昨天在做一个上传文件的模块时遇到了这样的问题:打开文件一上传,上传成功后再次点击文件一,change事件无反应 <input type="file" name="f ...

  8. [转帖]IBM Q3财报:云营收达到50亿美元 上升11%

    IBM Q3财报:云营收达到50亿美元 上升11% http://www.eetop.cn/cpu_soc/6946136.html 2019年Q3 IBM的营收 从千亿到 缩减到了 八百亿刀 卖掉了 ...

  9. spring.profiles.active=@profiles.active@的含义

    spring.profiles.active=@profiles.active@ ,其实是配合 maven profile进行选择不同配置文件进行启动. 当执行 mvn clean package - ...

  10. comment on exported function Perimeter should be of the form "Perimeter ..."go-lint

    这个提示是检查代码注释格式有问题 正确方式: