#include<stdio.h>
#include<cstring>
char a[35][100],b[100],c[100];
int n;
double grid[35][35];
int exc(char str[100])
{
for (int i=0;i<n;i++)
if(strcmp(a[i],str)==0)
return i;
return 0;
}
int floyd()
{
int i,j,k;
double m;
for (i=0;i<n;i++)
for (j=0;j<n;j++)
for (k=0;k<n;k++)
{
m=grid[i][k]*grid[k][j];
if (m>grid[i][j])
grid[i][j]=m;
}
for (i=0;i<n;i++)
if(grid[i][i]>1)
return 1;
return 0;
}
int main()
{
int i=1,j,m;
double rate;
while(scanf("%d",&n)!=EOF)
{
if (n==0) break;
memset (grid,0,sizeof(grid));
for (j=0;j<n;j++)
scanf("%s",a[j]);
scanf("%d",&m);
while (m--)
{
scanf("%s%lf%s",b,&rate,c);
grid[exc(b)][exc(c)]=rate;
}
printf("Case %d: ",i++);
if (floyd())
printf("Yes\n");
else
printf("No\n");
}
return 0;
}
转载于:https://www.cnblogs.com/You-Change/p/3468288.html