标签: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