#include <iostream> #include <map> #include <string> #include <memory.h> using namespace std; ; int n; //货币种类 int m; //兑换方式 mapSTL; //建立一个字符串与整数一一对应的容器STL,以便利用邻接矩阵存储数据 double rate; ],str1[],str2[]; ][]; int i,j,k; void floyd(void) { ;k<=n;k++) ;i<=n;i++) ;j<=n;j++) if(dis[i][j] < dis[i][k] * dis[k][j]) //变形的最大路径,变"+"为"*" dis[i][j] = dis[i][k] * dis[k][j]; return; } int main() { // freopen("in.txt","r",stdin); ; while(cases) { memset(dis,inf,sizeof(dis)); cin>>n; if(!n)break; ;i<=n;i++) { cin>>str; STL[str]=i; //将输入的货币从1到n依次编号 dis[i][i]=; //到自身的转换率默认为1,但通过floyd可能会被改变 } cin>>m; ;i<=m;i++) { cin >> str1 >> rate >> str2; dis[STL[str1]][STL[str2]]=rate; //构造图 } floyd(); int flag=false; ;i<=n;i++) ) { flag=true; break; } if(flag) cout<<"Case "<<cases++<<": Yes"<<endl; else cout<<"Case "<<cases++<<": No"<<endl; } ; }