标签:clu cpp real from desc ast enc ref contain
http://poj.org/problem?id=2240
Description
Input
Output
Sample Input
3 USDollar BritishPound FrenchFranc 3 USDollar 0.5 BritishPound BritishPound 10.0 FrenchFranc FrenchFranc 0.21 USDollar 3 USDollar BritishPound FrenchFranc 6 USDollar 0.5 BritishPound USDollar 4.9 FrenchFranc BritishPound 10.0 FrenchFranc BritishPound 1.99 USDollar FrenchFranc 0.09 BritishPound FrenchFranc 0.19 USDollar 0
Sample Output
Case 1: Yes Case 2: No
代码:
#include<cstdio> #include<cstring> #include<string> #include<algorithm> #include<iostream> #include<vector> #include<map> using namespace std; int N, M; char name[110]; map<string, int> mp; double maze[1010][1010]; void floyd() { for(int k = 1; k <= N; k ++) { for(int i = 1; i <= N; i ++) { for(int j = 1; j <= N; j ++) { if(maze[i][j] < maze[i][k] * maze[k][j]) maze[i][j] = maze[i][k] * maze[k][j]; } } } } int main() { int Case = 1; char s1[110], s2[110]; double cost; while(~scanf("%d", &N)) { if(!N) break; memset(maze, 0, sizeof(maze)); for(int i = 1; i <= N; i ++) maze[i][i] = 1; for(int i = 1; i <= N; i ++) { scanf("%s", name); mp[name] = i; } scanf("%d", &M); for(int i = 1; i <= M; i ++) { scanf("%s%lf%s", s1, &cost, s2); maze[mp[s1]][mp[s2]] = cost; } floyd(); printf("Case %d: ", Case ++); for(int i = 1; i <= N; i ++) { if(maze[i][i] > 1) { printf("Yes\n"); break; } else if(i == N) printf("No\n"); } } return 0; }
标签:clu cpp real from desc ast enc ref contain
原文地址:https://www.cnblogs.com/zlrrrr/p/9799918.html