题目链接:点击打开链接
只要存在一种货币就能输出“Yes”;可以用floyd 更新每点通过汇率计算后的最大值
code:
#include<iostream>
#include<algorithm>
#include<stdio.h>
#include<map>
#include<string.h>
#include<string>
using namespace std;
int n,m;
double maa[50][50];
map<string,int >ma;//使用map将string转换成数字 便于计算
int main()
{
// freopen("i.txt","r",stdin);
int i,j,k,tt=0;
double as;
string s,t;
while(scanf("%d",&n)!=EOF,n)
{
int len=1;
while(n--)
{
cin>>s;
ma[s]=len++;
}
scanf("%d",&m);
memset(maa,0,sizeof(maa));
while(m--){
cin>>s>>as>>t;
maa[ma[s]][ma[t]]=as;
}
for(k=1;k<len;k++)
for(i=1;i<len;i++)
for(j=1;j<len;j++)
if(maa[i][j]<maa[i][k]*maa[k][j])
maa[i][j]=maa[i][k]*maa[k][j];
for(i=1;i<len;i++)
if(maa[i][i]>1)//数组保存的结果>1 即可说明增加 可输出“Yes”。
break;
tt++;
printf("Case %d: ",tt);
if(i==len)
printf("No\n");
else
printf("Yes\n");
}
return 0;
}