poj

View Code
#define MAX 50
double mpp[MAX][MAX];
map
<string ,int > m;
char str[100],str1[100],str2[100] ;
int main()
{
int n,i,j,k,num,t=1;
double rate;
while(scanf("%d",&n)!=EOF)
{
if(n==0) return 0;
m.clear();
memset(mpp,
0,sizeof(mpp));

for(i=0;i<n;i++)
{
scanf(
"%s",str);
m[str]
=i;
}
scanf(
"%d",&num);
for(i=0;i<num;i++)
{
scanf(
"%s%lf%s",str1,&rate,str2);
mpp[m[str1]][m[str2]]
=rate;
}

for(k=0;k<n;k++)
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(mpp[i][k]*mpp[k][j]>mpp[i][j])
mpp[i][j]
=mpp[i][k]*mpp[k][j];
bool ok=false;
for(i=0;i<n;i++)
if(mpp[i][i]>1)
{
ok
=true;
break;
}
if(ok==true)
printf(
"Case %d: Yes\n",t++);
else
printf(
"Case %d: No\n",t++);

}

posted on 2011-07-12 16:50  thinking001  阅读(111)  评论(0)    收藏  举报

导航