主要用于判断负环
#include<cstdio>
#include<cstring>
struct edge{
int x,y;
double rate;
}a[50000];
int n,m,l;
double v[1000],r;
char s[100][500],c[500],b[500];
int bellmanfoyd(int star)
{
for(int i=0;i<n;i++)
v[i] = 0.0;
v[star] = 100;
for(int i=0;i<n-1;i++)
{
bool sym1 = true;
for(int j=0;j<l;j++)
{
if(v[a[j].y]<v[a[j].x]*a[j].rate){
sym1 = false;
v[a[j].y] = v[a[j].x]*a[j].rate;
}
}
if(sym1)return false;
}
for(int j=0;j<l;j++)
{
if(v[a[j].y]<v[a[j].x]*a[j].rate)
return true;
}
return false;
}
int main()
{
int i1 = 1;
while(scanf("%d",&n)&&n){
l = 0;
bool sym = false;
for(int i=0;i<n;i++)
scanf("%s",s[i]);
scanf("%d",&m);
while(m--)
{
scanf("%s %lf %s",c,&r,b);
for(int i=0;i<n;i++)
if(strcmp(s[i],c)==0){a[l].x = i;break;}
for(int i=0;i<n;i++)
if(strcmp(s[i],b)==0){a[l].y = i;break;}
a[l].rate = r;
l++;
}
printf("Case %d: ",i1);
i1++;
for(int i=0;i<n;i++)
{
sym = bellmanfoyd(i);
if(sym)printf("Yes\n");break;
}
if(!sym)printf("No\n");
}
return 0;
}