Arbitrage POJ - 2240
题目链接:https://vjudge.net/problem/POJ-2240
思路:判正环,Bellman-ford和SPFA,floyd都可以,有正环就可以套利。
这里用SPFA,就是个板子题吧,把松弛改成乘法操作就好了。
- #include <iostream>
- #include <cstdio>
- #include <cstring>
- #include <algorithm>
- #include <queue>
- #include <string>
- #include <map>
- #include <cmath>
- #include <iomanip>
- using namespace std;
- typedef long long LL;
- #define inf (1LL << 25)
- #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 = ;
- map<string,int > si; //编号,方便建图
- int head[N];
- bool vis[N];
- int tot[N];
- double value[N];
- int cnt;
- int n;
- struct Edge{
- int to;
- double w;
- int next;
- }e[];
- void add(int u,int v,double w){
- e[cnt].to = v;
- e[cnt].w = w;
- e[cnt].next = head[u];
- head[u] = cnt++;
- }
- bool SPFA(){
- rep(i,,n) value[i] = ;
- value[] = ; //随意选个点就行
- rep(i,,n) vis[i] = false;
- rep(i,,n) tot[i] = ;
- vis[] = true;
- queue<int> que;
- que.push();
- while(!que.empty()){
- int u = que.front();
- que.pop();
- vis[u] = false;
- for(int o = head[u]; ~o; o = e[o].next){
- int v = e[o].to;
- double w = e[o].w;
- if(value[v] < value[u] * w){
- value[v] = value[u] * w;
- if(!vis[v]){
- vis[v] = true;
- que.push(v);
- tot[v]++;
- if(tot[v] > n - ) return true; //有正环
- }
- }
- }
- }
- return false;
- }
- int main(){
- ios::sync_with_stdio(false);
- cin.tie();
- int tot = ;
- while(cin >> n && n){
- rep(i,,n) head[i] = -;
- cnt = ;
- si.clear();
- string in;
- rep(i,,n){
- cin >> in;
- si[in] = i;
- }
- int m;
- string u,v;
- double w;
- cin >> m;
- rep(i,,m){
- cin >> u >> w >> v;
- add(si[u],si[v],w);
- }
- cout << "Case " << ++tot << ": ";
- if(SPFA()) cout << "Yes" << endl;
- else cout << "No" << endl;
- }
- getchar(); getchar();
- return ;
- }
Arbitrage POJ - 2240的更多相关文章
- Arbitrage - poj 2240 (Bellman-ford)
Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 17374 Accepted: 7312 Description Ar ...
- 最短路(Floyd_Warshall) POJ 2240 Arbitrage
题目传送门 /* 最短路:Floyd模板题 只要把+改为*就ok了,热闹后判断d[i][i]是否大于1 文件输入的ONLINE_JUDGE少写了个_,WA了N遍:) */ #include <c ...
- POJ 2240 Arbitrage / ZOJ 1092 Arbitrage / HDU 1217 Arbitrage / SPOJ Arbitrage(图论,环)
POJ 2240 Arbitrage / ZOJ 1092 Arbitrage / HDU 1217 Arbitrage / SPOJ Arbitrage(图论,环) Description Arbi ...
- poj 2240 Arbitrage 题解
Arbitrage Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 21300 Accepted: 9079 Descri ...
- poj 2240 Arbitrage (Floyd)
链接:poj 2240 题意:首先给出N中货币,然后给出了这N种货币之间的兑换的兑换率. 如 USDollar 0.5 BritishPound 表示 :1 USDollar兑换成0.5 Britis ...
- POJ 2240 Arbitrage【Bellman_ford坑】
链接: http://poj.org/problem?id=2240 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=22010#probl ...
- POJ 2240 && ZOJ 1082 Arbitrage 最短路,c++ stl pass g++ tle 难度:0
http://poj.org/problem?id=2240 用log化乘法为加法找正圈 c++ 110ms,g++tle #include <string> #include <m ...
- POJ 2240 Arbitrage(floyd)
http://poj.org/problem?id=2240 题意 : 好吧,又是一个换钱的题:套利是利用货币汇率的差异进行的货币转换,例如用1美元购买0.5英镑,1英镑可以购买10法郎,一法郎可以购 ...
- poj 2240 Arbitrage (最短路 bellman_ford)
题目:http://poj.org/problem?id=2240 题意:给定n个货币名称,给m个货币之间的汇率,求会不会增加 和1860差不多,求有没有正环 刚开始没对,不知道为什么用 double ...
随机推荐
- 数据库 查询第31-40行数据,ID不连续
一.SQLServer 大致分为两种情况:ID连续和ID不连续. 1.ID连续的情况: select * from A where ID between 31 and 40 2.ID不连续的情况: ( ...
- Oracle 双机热备+双机冷备+负载均衡
引用地址:https://wenku.baidu.com/view/7cca62f1ddccda38366baf7f.html SQL Server 2008 R2双机热备 引用地址:https:// ...
- Linux学习(五)远程登录
Linux一般作为服务器使用,而服务器一般放在机房,你不可能在机房操作你的Linux服务器. 这时我们就需要远程登录到Linux服务器来管理维护系统. Linux系统中是通过ssh服务实现的远程登录功 ...
- Python Singleton Pattern(单例模式)
简介 单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在.当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场. 当 ...
- yii2-CaptchaAction macos500 不显示
把公司一个项目pull到本地 发现验证码不输出了 怀疑是gd库没装 php -m看了下 gd库是装了的 有搜索到可能是因为自带的php拓展生成不了png(觉得不太可能) 试了下自己写一个图片生成pn ...
- pytest--配置
说到配置,大家可能想到的是不经常更改的内容,比如Django里的settings.py文件,或者我们做自动化的时候,把测试环境的域名和正式环境的域名放到一个配置文件里,所有的接口都从这个文件里读取.这 ...
- chentos7 安装jdk1.8(二进制安装)
首先下载jdk1.8 去官网下载jdk:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.h ...
- Mac流程图的软件
里面有破解机器,按照步骤一步步来就可以了 https://www.zhinin.com/omnigraffle_pro-mac.html
- class net.sf.cglib.core.DebuggingClassWriter overrides final method visit
在使用CGLIB进行动态代理的时候,报了[java.lang.VerifyError: class net.sf.cglib.core.DebuggingClassWriter overrides f ...
- AJAX发送异步请求教程详解
AJAX 一.AJAX简介 什么是 AJAX ? AJAX = 异步 JavaScript 和 XML. AJAX 是一种用于创建快速动态网页的技术. 通过在后台与服务器进行少量数据交换,AJAX 可 ...