判断通过货币的兑换能否获利,,最短路,这里是乘法,,
#include<stdio.h> #include<string.h> double map[31][31],ans[31][31]; char str[40][40]; int main() { int i,j,k,n,m,op=1; char ch[40]; double w; while(scanf("%d",&n),n) { memset(map,0,sizeof(map)); for(i=0;i<n;i++) map[i][i]=1; for(i=0;i<n;i++) scanf("%s",str[i]); scanf("%d",&m); for(i=0;i<m;i++) { scanf("%s",ch); for(j=0;j<n;j++) if(strcmp(ch,str[j])==0) break; scanf("%lf",&w); scanf("%s",ch); for(k=0;k<n;k++) if(strcmp(ch,str[k])==0) break; map[j][k]=w; } for(k=0;k<n;k++) for(i=0;i<n;i++) for(j=0;j<n;j++) if(map[i][j]<map[i][k]*map[k][j]) map[i][j]=map[i][k]*map[k][j]; printf("Case %d: ",op++); if(map[0][0]>1)printf("Yes "); else printf("No "); } return 0; }