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++);
}
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) 收藏 举报

浙公网安备 33010602011771号