http://poj.org/problem?id=2240

基本和poj 1860相同 只是把单点变成了任意点 做完1860再做这题就完全把思路套上就过了

做完才发现网上的题解都用的是floyd 不过整体思路都是大同小异吧

不过在效率上好像就低下了太多(发现原来是cin的原因 真的是深深感到cin的恶意了)= =

bellman

#include<cstdio>
#include<cstring>
#include<cmath>
#include<queue>
#include<stack>
#include<iostream>
#include<algorithm>
using namespace std;
char str[50][50];
double u[1000],v[1000],w[1000];
double d[100];
int n,m;
int find(char*s)
{for(int i=1;i<=n;i++){if(strcmp(s,str[i])==0)return i;}
}
int main()
{int i,j,k;int casee=1;char l[50],r[50];while(scanf("%d",&n)!=EOF){if(n==0) break;for(i=1;i<=n;i++)scanf("%s",str[i]);scanf("%d",&m);for(i=1;i<=m;i++){scanf("%s%lf%s",l,&w[i],r);u[i]=find(l);v[i]=find(r);}memset(d,0,sizeof(d));d[1]=20;int ok=0;for(k=0;k<n;k++){for(i=1;i<=m;i++){int x=u[i],y=v[i];if(d[x]*w[i]>d[y]){d[y]=d[x]*w[i];}}}for(i=1;i<=m;i++){if(ok) break;int x=u[i],y=v[i];if(d[x]*w[i]>d[y]){ok=1;}}if(ok)printf("Case %d: Yes\n",casee++);elseprintf("Case %d: No\n",casee++);}
}

View Code

spfa

#include<cstdio>
#include<cstring>
#include<cmath>
#include<queue>
#include<stack>
#include<iostream>
#include<algorithm>
using namespace std;
char str[50][50];
int u[1000],v[1000];
int coun[1000];
double w[1000];
int first[1000],next[1000];
double d[100];
int n,m;
int find(char*s)
{for(int i=1;i<=n;i++){if(strcmp(s,str[i])==0)return i;}
}
int main()
{int i,j,k;int casee=1;char l[50],r[50];while(scanf("%d",&n)!=EOF){if(n==0) break;for(i=1;i<=n;i++)scanf("%s",str[i]);scanf("%d",&m);for(i=1;i<=n;i++) first[i]=-1;for(i=1;i<=m;i++){scanf("%s%lf%s",l,&w[i],r);u[i]=find(l);v[i]=find(r);next[i]=first[u[i]];first[u[i]]=i;}memset(d,0,sizeof(d));memset(coun,0,sizeof(coun));d[1]=20;coun[1]++;int ok=0;int tot=0;int q[1000];bool inq[1000];memset(inq,0,sizeof(inq));q[tot++]=1;while(tot){if(ok) break;int x=q[--tot];inq[x]=false;for(int e=first[x];e!=-1;e=next[e]){if(d[x]*w[e]>d[v[e]]){d[v[e]]=d[x]*w[e];if(!inq[v[e]]){inq[v[e]]=true;q[tot++]=v[e];coun[v[e]]++;if(coun[v[e]]>n) {ok=1;break;}}}}}if(ok)printf("Case %d: Yes\n",casee++);elseprintf("Case %d: No\n",casee++);}
}

View Code

转载于:https://www.cnblogs.com/sola1994/p/4239916.html

poj 2240 Arbitrage(bellman-ford spfa 判断正环)相关推荐

  1. POJ 2240 Arbitrage Bellman_ford 判读是否存在正环

    和POJ1860差不多,就是用bellmanford判读是否存在正环,注意的是同种货币之间也可以交换,就是说:A货币换A货币汇率是2的情况也是存在的. #include<stdio.h> ...

  2. POJ 2240 Arbitrage(SPFA判正环)

    POJ 2240 Arbitrage 题目大意 套利是指利用货币汇率的差异,将一种货币的一个单位转换为同一货币的多个单位.例如,假设1美元买0.5英镑,1英镑买10.0法国法郎,1法国法郎买0.21美 ...

  3. POJ 3259 Wormholes【最短路/SPFA判断负环模板】

    农夫约翰在探索他的许多农场,发现了一些惊人的虫洞.虫洞是很奇特的,因为它是一个单向通道,可让你进入虫洞的前达到目的地!他的N(1≤N≤500)个农场被编号为1..N,之间有M(1≤M≤2500)条路径 ...

  4. 货币兑换(判断正环)

    货币兑换 POJ - 1860 我们城市有几个货币兑换点.让我们假设每个点专门研究两种特定的货币,并且只与这些货币进行兑换操作.可以有多个点专门用于同一对货币.每个点都有自己的汇率,A到B的汇率就是1 ...

  5. 算法提高课-图论-负环-AcWing 1165. 单词环:spfa判正环、二分、01分数规划

    文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: 如何建图? 这样建图.以样例举例.起点是前两个字母,终点是末尾两个字母,边权是字符串的长度. 我们求的是什么呢? 题目要求Σ边权Σ1 ...

  6. 牛客多校2 - Link with Game Glitch(spfa求正环,套汇,二分答案)

    https://ac.nowcoder.com/acm/contest/33187/D 题意 给定 n 种物品,一共 m 种转换方案. 每种转换方案给出四个数 a , b , c , d a, b, ...

  7. hdu 1317 XYZZY【Bellheman_ford 判断正环小应用】

    链接: http://acm.hdu.edu.cn/showproblem.php?pid=1317 http://acm.hust.edu.cn/vjudge/contest/view.action ...

  8. POJ 2240 Arbitrage(判正环)

    http://poj.org/problem?id=2240 题意: 货币兑换,判断最否是否能获利. 思路: 又是货币兑换题,Belloman-ford和floyd算法都可以的. 1 #include ...

  9. Arbitrage——判断正环Bellman-Ford/SPFA

    [题目描述] Arbitrage is the use of discrepancies in currency exchange rates to transform one unit of a c ...

最新文章

  1. html 和 body标签的 css 设置
  2. spring整合问题集合1
  3. php 验证码文件,php实现的验证码文件类实例
  4. 利用SetConsoleTextAttribute函数设置控制台颜色
  5. 计算t-test 的C程序
  6. 原来咱们公司准备裁员还有一部份原因是这样的!
  7. ubuntu下使用openocd+jlink进行STM32开发调试
  8. dubbo常见的一些面试题
  9. 从技术转管理,我做了什么来拯救自己?
  10. 代码生成器AutoGenerator
  11. Fgui: Glist 实现无限滑动 虚拟列表
  12. Java随机产生中文昵称
  13. java图形用户界面设计实验_java图形用户界面设计实验报告(共10篇).doc
  14. python模拟登录163邮箱_用python实现模拟登陆163邮箱
  15. css3永久放大动画,CSS3 简单的方形放大动画
  16. 《Java高级程序设计》清华大学出版社 徐传远 课后习题答案
  17. 冯诺依曼体系结构(现代计算机的原型)+cpu的两个核心指标
  18. Gameplay - 设计使命召唤类型的关卡
  19. 模型小常识,C4D扫描的使用
  20. 计算机视觉课程设计:基于SSD、Dlib多进程目标检测的对比研究

热门文章

  1. eclipse 最全快捷键 分享快乐与便捷
  2. failed to load kernel library!处理办法
  3. 性能报告——使用AOP与DYNAMICProxy的orm性能测试
  4. 【莓控】黑莓GOOGLE MAPS(GPS软件)-转贴
  5. 博达路由器如何配置互联网ip_如何成为技术大牛第七步——路由器下接交换机单臂路由配置方法...
  6. 单片机STM8S测量电压电路_单片机设计的胶带输送机智能模糊检测系统,准确性高,胶带寿命长...
  7. VMware安装Linux(CentOS7)
  8. linux安装mysql要先装jdk吗_linux安装mysql5.7.22,tomcat,jdk
  9. 以太网速率怎么手动设置_以太网能不能不丢包?
  10. Linux指令设置波特率停止位,linux下的picocom怎么设置停止位,波特率