题意:首先给出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. 解决SDK Manager无法更新问题

    因为google被封了,导致Android SDK Manager无法更新,解决方案如下: 1.选择tools->options,跳出Settings页面 2.设置HTTP Proxy代理,设置 ...

  2. js实现中文简繁切换效果

    html代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www ...

  3. php中的NOTICE 的错误解决方法

    PHP新手NOTICE错误,特此写给那些遇到和我一样错误的朋友.   刚学习PHP,不久 最近在整留言板,刚才遇到个问题. 页面中,好多类似 Notice: in D:\wamp\www\study\ ...

  4. Android2.2 API —— ImageView

    注意 请查看本文后期更新完整版: http://www.cnblogs.com/over140/archive/2011/06/08/2075054.html 来源: 农民伯伯: http://www ...

  5. 改善 ASP.NET MVC 代码库的 5 点建议

    MVC,建议 刚刚检查完支持工单中的一些代码,笔者想针对 ASP.NET MVC 应用的改进写一些建议.这些内容仍在笔者脑海中,愿与各位一同分享.若你已使用 MVC 一段时间,那么以下内容可能并不新鲜 ...

  6. oracle中有关用户、角色的一些概念。

    oracle中的每个用户对应一个单独的方案(schema),方案的名字与用户名一样,方案中包含很多数据对象,表,视图,触发器,存储过程等元素. oracle中管理数据库的角色有sys,system,数 ...

  7. ServletContextListener作用(转)

    ServletContext 被 Servlet 程序用来与 Web 容器通信.例如写日志,转发请求.每一个 Web 应用程序含有一个Context,被Web应用内的各个程序共享.因为Context可 ...

  8. HDFS文件系统基本文件命令、编程读写HDFS

    基本文件命令: 格式为:hadoop fs -cmd <args> cmd的命名通常与unix对应的命令名相同.例如,文件列表命令: hadoop fs -ls 1.添加目录和文件 HDF ...

  9. IE的表头固定/表头不动(使用expression)

    本文主要介绍在IE浏览器中,实现表头固定的一种方法.这种方法使用到了 IE 浏览器特有的 expression 方法. 表头固定DEMO1 主要代码: <style type="tex ...

  10. HDOJ/HDU 2560 Buildings(嗯~水题)

    Problem Description We divide the HZNU Campus into N*M grids. As you can see from the picture below, ...