标签:
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 5794 Accepted Submission(s): 2683
/* ID: LinKArftc PROG: 1217.cpp LANG: C++ */ #include <map> #include <set> #include <cmath> #include <stack> #include <queue> #include <vector> #include <cstdio> #include <string> #include <utility> #include <cstdlib> #include <cstring> #include <iostream> #include <algorithm> using namespace std; #define eps 1e-8 #define randin srand((unsigned int)time(NULL)) #define input freopen("input.txt","r",stdin) #define debug(s) cout << "s = " << s << endl; #define outstars cout << "*************" << endl; const double PI = acos(-1.0); const double e = exp(1.0); const int inf = 0x3f3f3f3f; const int INF = 0x7fffffff; typedef long long ll; const int maxn = 50; int n, m; double table[maxn][maxn]; void floyd() { for (int k = 1; k <= n; k ++) { for (int i = 1; i <= n; i ++) { for (int j = 1; j <= n; j ++) { table[i][j] = max(table[i][j], table[i][k] * table[k][j]); } } } } int main() { //input; int _t = 1; while (~scanf("%d", &n) && n) { map <string, int> mp; string str, str1; int cnt = 1; for (int i = 1; i <= n; i ++) { cin >> str; mp[str] = cnt ++; } memset(table, 0, sizeof(table)); scanf("%d", &m); double change; for (int i = 1; i <= m; i ++) { cin >> str >> change >> str1; table[mp[str]][mp[str1]] = change; } floyd(); bool flag = false; for (int i = 1; i <= n; i ++) { if (table[i][i] - 1.0 > eps) { flag = true; break; } } if (flag) printf("Case %d: Yes\n", _t ++); else printf("Case %d: No\n", _t ++); } return 0; }
标签:
原文地址:http://www.cnblogs.com/LinKArftc/p/4904486.html