2240

来源:互联网 发布:海信电视网络连接失败 编辑:程序博客网 时间:2024/06/08 17:30
 
#include <iostream>#include <map>#include <string>using namespace std;const int MAX_V = 31;const double MIN = 1e-8;double g[MAX_V][MAX_V];int v;bool input_build(){cin >> v;if(0 == v){return false;}map<string, int> c2v;string c;for(int i = 1; i <= v; ++i){cin >> c;c2v.insert(pair<string, int>(c, i));}int m;cin >> m;string n1, n2;double rate;for(int i = 1; i <= v; ++i){for(int j = 1; j <= v; ++j){if(i == j){g[i][j] = 1.0;}else{g[i][j] = 0.0;}}}for(int i = 0; i < m; ++i){cin >> n1 >> rate >> n2;g[c2v[n1]][c2v[n2]] = rate;}return true;}void floyd(){for(int k = 1; k <= v; ++k){for(int i = 1; i <= v; ++i){for(int j = 1; j <= v; ++j){if(g[i][j] < g[i][k] * g[k][j]){g[i][j] = g[i][k] * g[k][j];}}}}}bool judge(){for(int i = 1; i <= v; ++i){if(g[i][i] > 1.0 + MIN){return true;}}return false;}int main(){for(int i = 1; input_build(); ++i){floyd();if(judge()){cout << "Case " << i << ": Yes" << endl;}else{cout << "Case " << i << ": No" << endl;}}return 0;}