
//Accepted 732 KB 782 ms //floyd应用 #include <cstdio> #include <cstring> #include <iostream> #include <queue> #include <cmath> #include <map> #include <algorithm> using namespace std; /** * This is a documentation comment block * 如果有一天你坚持不下去了,就想想你为什么走到这儿! * @authr songt */ ; double a[imax_n][imax_n]; map<string ,int > mp; int n; double max(double a,double b) { ) return b; return a; } void floyd() { ;k<=n;k++) ;i<=n;i++) ;j<=n;j++) && a[k][j]>1e-) a[i][j]=max(a[i][j],a[i][k]*a[k][j]); /* for (int i=1;i<=n;i++) { for (int j=1;j<=n;j++) { printf("%.3lf ",a[i][j]); } printf("\n"); } */ } int main() { ; string s; string s1,s2; double rate; while (scanf("%d",&n),n) { mp.clear(); ;i<=n;i++) { cin>>s; mp[s]=i; } int m; scanf("%d",&m); ;i<=n;i++) ;j<=n;j++) { ; ; } ;i<=m;i++) { cin>>s1>>rate>>s2; //cout<<mp[s1]<<" "<<mp[s2]<<endl; a[mp[s1]][mp[s2]]=rate; } floyd(); ; ;i<=n;i++) >1e-) flag=; printf("Case %d: ",++t); if (flag) printf("Yes\n"); else printf("No\n"); } ; }