-
//zoj1092 Arbitrage
-
//Accepted 1092 C ++ 00:00.07 400K
-
#include <stdio.h>
-
#include <string.h>
-
#define MAXN 30
-
typedef double elem;
-
int n;
-
int find(char s[40], char c[][40], int n)
-
{
-
for (int i=0; i<n; ++i)
-
if (strcmp(s,c[i]) == 0)
-
return i;
-
return -1;
-
}
-
void floyd(int n,elem a[][MAXN])
-
{
-
for (int k=0; k<n; ++k)
-
for (int i=0; i<n; ++i)
-
for (int j=0; j<n; ++j)
-
if (a[i][j]<a[i][k]*a[k][j] && a[i][k]*a[k][j]!=0.0)
-
a[i][j] = a[i][k]*a[k][j];
-
}
-
void solve()
-
{
-
int i,m;
-
elem r[MAXN][MAXN],t;
-
char left[40],right[40],c[MAXN][40];
-
for (i=0; i<n; ++i)
-
scanf ("%s",c[i]);
-
scanf ("%d",&m);
-
memset(r,0,sizeof(r));
-
for (i=0; i<m; ++i) {
-
scanf ("%s %lf %s",left,&t,right);
-
r[find(left,c,n)][find(right,c,n)] = t;
-
}
-
floyd(n,r);
-
for (i=0; i<n; ++i)
-
if (r[i][i] > 1.0) {
-
printf ("Yes/n");
-
return;
-
}
-
printf ("No/n");
-
}
-
int main()
-
{
-
#ifndef ONLINE_JUDGE
-
freopen("1092.txt","r",stdin);
-
#endif
-
int cnt = 1;
-
while (scanf ("%d",&n) != EOF && n) {
-
printf ("Case %d: ",cnt++);
-
solve();
-
}
-
#ifndef ONLINE_JUDGE
-
fclose(stdin);
-
#endif
-
return 0;
-
}
zoj1092 Arbitrage
最新推荐文章于 2022-05-06 10:59:53 发布