题意:首先给出N中货币,然后给出了这N种货币之间的兑换的兑换率。
如 USDollar 0.5 BritishPound 表示 :1 USDollar兑换成0.5 BritishPound。
问在这N种货币中是否存在货币经过若干次兑换后,兑换成原来的货币能够使货币量添加。
思路:本题事实上是Floyd的变形。将变换率作为构成图的路径的权值。只是构成的图是一个有向图。
最后将松弛操作变换为:if(dis[i][j]<dis[i][k]*dis[k][j])。

#include<stdio.h>
#include<string.h>
int main()
{
int n,m,i,j,k,l,r,t=0;
char s[35][30],s1[30],s2[30];
double a[35][35],c;
while(scanf("%d",&n)!=EOF){
if(n==0)
break;
t++;
memset(a,0,sizeof(a)); //開始都初始化为0了,而不是无穷大,当然能够初始化为无穷小
for(i=1;i<=n;i++){
scanf("%s",s[i]);
a[i][i]=1.0; //自己的税率初始化为1
}
scanf("%d",&m);
while(m--){
scanf("%s%lf%s",s1,&c,s2);
l=r=0;
for(i=1;i<=n;i++){
if(strcmp(s1,s[i])==0) //存在自己对自己的兑换率,全部两个字符串可能相等
l=i;
if(strcmp(s2,s[i])==0) //之前由于加了 else 将上述情况排除了,一直wa
r=i;
if(l&&r)
break;
}
a[l][r]=c;
}
for(k=1;k<=n;k++) //Floyd算法
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(a[i][k]*a[k][j]>a[i][j]) //松弛条件
a[i][j]=a[i][k]*a[k][j];
k=0;
for(i=1;i<=n;i++)
if(a[i][i]>1){
k=1;
break;
}
if(k)
printf("Case %d: Yes\n",t);
else
printf("Case %d: No\n",t);
}
return 0;
}

poj 2240 Arbitrage (Floyd)的更多相关文章

  1. POJ 2240 Arbitrage(floyd)

    http://poj.org/problem?id=2240 题意 : 好吧,又是一个换钱的题:套利是利用货币汇率的差异进行的货币转换,例如用1美元购买0.5英镑,1英镑可以购买10法郎,一法郎可以购 ...

  2. POJ 2240 - Arbitrage(bellman_ford & floyd)

    题意: 给出一些货币和货币之间的兑换比率,问是否可以使某种货币经过一些列兑换之后,货币值增加. 举例说就是1美元经过一些兑换之后,超过1美元.可以输出Yes,否则输出No. 分析: 首先我们要把货币之 ...

  3. POJ 2240 Arbitrage(判正环)

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

  4. POJ 2240 Arbitrage (求负环)

    Arbitrage 题目链接: http://acm.hust.edu.cn/vjudge/contest/122685#problem/I Description Arbitrage is the ...

  5. POJ 2240 Arbitrage(Floyed-Warshall算法)

    题意:给出n种货币,m种兑换比率(一种货币兑换为另一种货币的比率),判断测试用例中套汇是否可行.(套汇的意思就是在经过一系列的货币兑换之后,是否可以获利.例如:货币i→货币j→货币i,这样兑换后,是否 ...

  6. poj 2240 Arbitrage(Bellman_ford变形)

    题目链接:http://poj.org/problem?id=2240 题目就是要通过还钱涨自己的本钱最后还能换回到自己原来的钱种. 就是判一下有没有负环那么就直接用bellman_ford来判断有没 ...

  7. POJ 2240 Arbitrage (Bellman Ford判正环)

    Arbitrage Time Limit: 1000MS   Memory Limit: 65536K Total Submissions:27167   Accepted: 11440 Descri ...

  8. POJ 2240 Arbitrage(SPFA+邻接矩阵)

    ( ̄▽ ̄)" #include<iostream> #include<cstdio> #include<cmath> #include<algori ...

  9. POJ 2253 Frogger(floyd)

    http://poj.org/problem?id=2253 题意 : 题目是说,有这样一只青蛙Freddy,他在一块石头上,他呢注意到青蛙Fiona在另一块石头上,想去拜访,但是两块石头太远了,所以 ...

随机推荐

  1. oracle创建第三方数据接口表,指定特定用户访问某张表

    /*****创建用户并指定操作哪张表开始******/ --1.创建用户并设置默认表空间 CREATE USER CHENGDWY IDENTIFIED BY CHENGDWY DEFAULT TAB ...

  2. js 通过function来定义函数

    什么是函数: 函数是完成某一功能的代码段. 函数是可重复执行的代码段. 函数方便管理和维护. 自定义一个函数: 通过function关键字来定义一个函数. 语法:   function 函数名称([可 ...

  3. 利用jquery进行ajax提交表单和附带的数据

    1.获取表单数据: $form.serialize() 2.附带数据:input[status]=1 3.构造url链接:url = $form.attr('action') + '?input[st ...

  4. 桂电在线_微信公众平台开发之-运用angularjs显示学校公告新闻列表和详情页面

    折腾angularjs的感悟 几天折腾,总的来说看了很多博客,要么不是最新的技术文档,要么写得不够完整,因为别人是基于他们的理解写的技术博客代码不一定会贴完整,所以一旦你用的是最新的想要看完整的实例就 ...

  5. Jquery常用功能

    jQuery 1.4给开发者带来了很多值得兴奋的新特性,同时使用jQuery的人也越来越多,为了方便大家对jQuery的使用,下面列出了一些jQuery使用技巧.比如有禁止右键点击.隐藏搜索文本框文字 ...

  6. smali 语法基础

    dalvik字节码有两种类型,原始类型和引用类型.对象和数组是引用类型,其它都是原始类型. V  void Z  boolean B  byte S  short C  char I  int F   ...

  7. 2016022607 - redis配置文件

    在Redis有配置文件(redis.conf)可在Redis的根目录下找到.可以通过Redis的CONFIG命令设置所有Redis的配置. Redis的CONFIG命令的基本语法如下所示: redis ...

  8. Word神器使用

    调整自动换行符的换行起始点: 拖拽下面的三角部分(三角下面的四边形部分不要碰),就可以调整自动编号的换行后的其实点在哪里.

  9. The Greate Wall 相关网络知识(一)域名劫持

    什么叫做DNS? DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串 ...

  10. FTP原理和cent OS vsFTPd架设

    1.ftp为明码传输 2.客户端和服务端采用两条链路来分别进行命令和数据的传输.数据传输的模式分为主动链接和被动链接. 3.客户端在需要数据的时候,会告知服务器端采取主动或者被动的方式来链接. 4.如 ...