标签:
问题描述
输入
输出
样例输入
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
样例输出
Case 1: Yes Case 2: No
注意三点:
1:输出是Yes;
2:是单向;
3:货币自己到自己的汇率也可以不是1;
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string> 4 #include <string.h> 5 #include <map> 6 #include <stdlib.h> 7 #include <algorithm> 8 using namespace std; 9 const int N=1010; 10 map <string,int>a; 11 int n,m; 12 double w[N][N],c; 13 char b[N],u[N],v[N]; 14 int main() 15 { 16 int t=1; 17 while(scanf("%d",&n)!=EOF&&n) 18 { 19 a.clear();//Çå¿Õa 20 for(int i=1; i<=n; i++) 21 { 22 scanf("%s",b); 23 a[b]=i; 24 } 25 scanf("%d",&m); 26 for(int i=1; i<=n; i++) 27 { 28 for(int j=1; j<=n; j++) 29 { 30 w[i][j]=0; 31 } 32 } 33 for(int i=1; i<=m; i++) 34 { 35 scanf("%s%lf%s",u,&c,v); 36 w[a[u]][a[v]]=c; 37 } 38 for(int k=1; k<=n; k++) 39 { 40 for(int i=1; i<=n; i++) 41 { 42 for(int j=1; j<=n; j++) 43 { 44 if(i!=k&&k!=j&&w[i][k]!=0&&w[k][j]!=0) 45 { 46 w[i][j]=max(w[i][j],w[i][k]*w[k][j]); 47 } 48 } 49 } 50 } 51 int q=0; 52 for(int i=1; i<=n; i++) 53 { 54 if(w[i][i]>1) 55 { 56 q=1; 57 break; 58 } 59 } 60 if(q) 61 printf("Case %d: Yes\n",t++); 62 else 63 printf("Case %d: No\n",t++); 64 65 } 66 return 0; 67 }
#include <stdio.h>
#include <stdlib.h>
#include <string>
#include <string.h>
#include <map>
#include <stdlib.h>
#include <algorithm>
using namespace std;
const int N=1010;
map <string,int>a;
int n,m;
double w[N][N],c;
char b[N],u[N],v[N];
int main()
{
int t=1;
while(scanf("%d",&n)!=EOF&&n)
{
a.clear();//Çå¿Õa
for(int i=1; i<=n; i++)
{
scanf("%s",b);
a[b]=i;
}
scanf("%d",&m);
for(int i=1; i<=n; i++)
{
for(int j=1; j<=n; j++)
{
w[i][j]=0;
}
}
for(int i=1; i<=m; i++)
{
scanf("%s%lf%s",u,&c,v);
w[a[u]][a[v]]=c;
}
for(int k=1; k<=n; k++)
{
for(int i=1; i<=n; i++)
{
for(int j=1; j<=n; j++)
{
if(i!=k&&k!=j&&w[i][k]!=0&&w[k][j]!=0)
{
w[i][j]=max(w[i][j],w[i][k]*w[k][j]);
}
}
}
}
int q=0;
for(int i=1; i<=n; i++)
{
if(w[i][i]>1)
{
q=1;
break;
}
}
if(q)
printf("Case %d: Yes\n",t++);
else
printf("Case %d: No\n",t++);
}
return 0;
}
标签:
原文地址:http://www.cnblogs.com/tianmin123/p/4785141.html