#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<iostream>
#include<map>
using namespace std;
double a[1005][1005];
double d[1005][1005];
int n,m;
void floyd(){
int i,j;
for(i=0;i<n;i++){
for(j=0;j<n;j++){
d[i][j]=a[i][j];
}
}
int u,v,w;
for(u=0;u<n;u++){
for(v=0;v<n;v++){
for(w=0;w<n;w++){
if(d[v][u]*d[u][w]>d[v][w]){
d[v][w]=d[v][u]*d[u][w];
}
}
}
}
}
int main(){
int c=1;
while(scanf("%d",&n)!=EOF){
if(n==0)break;
int i,j;
map<string,int>mp;
memset(a,0,sizeof(a));
for(i=0;i<n;i++){
char s[100];
scanf("%s",s);
mp[s]=i;
}
scanf("%d",&m);
for(i=0;i<m;i++){
char s1[100],s2[100];
double x;
scanf("%s%lf%s",s1,&x,s2);
if(a[mp[s1]][mp[s2]]<x){
a[mp[s1]][mp[s2]]=x;
}
}
floyd();
int flag=0;
for(i=0;i<n;i++){
for(j=0;j<n;j++){
if(d[i][j]*d[j][i]>1.0){//最后还是要变成原来的那个货币
flag=1;
break;
}
}
}
if(!flag)printf("Case %d: No\n",c++);
else printf("Case %d: Yes\n",c++);
}
return 0;
}
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交