您的位置:首页 > 其它

poj 2240

2014-06-06 16:30 169 查看
题意;每两种货币之间有一种汇率 给定货币种类与汇率 问一种货币能否经过兑换后价值增大

思路:floyd算法的简单应用

#include<iostream>
#include<cstring>
using namespace std;
double map[111][111];
char s[33][111];
int n;
int get(char s1[])
{
for(int i=1;i<=n;i++)
if(strcmp(s[i],s1)==0) return i;
}
bool floyd()
{
int i,j,k;
for(k=1;k<=n;k++)
{
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(map[i][k]*map[k][j]>map[i][j])
map[i][j]=map[i][k]*map[k][j];
}
for(i=1;i<=n;i++)
if(map[i][i]>1) return true;
return false;
}
int main()
{
int i,m;
double rate;
char s1[111],s2[111];
int cas=0;
while(scanf("%d",&n)!=EOF)
{
cas++;
if(n==0) break;
memset(map,0,sizeof(map));
for(i=1;i<=n;i++)
cin>>s[i];
cin>>m;
while(m--)
{
cin>>s1>>rate>>s2;
int u=get(s1);
int v=get(s2);
map[u][v]=rate;
}
if(floyd())
printf("Case %d: Yes\n",cas);

else printf("Case %d: No\n",cas);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: