hdu 1217 Arbitrage
#include<stdio.h>
#include<algorithm>
#include<string.h>
#include<map>;
#include<iostream>
using namespace std;
int main()
{
int n,i,j,k,tot,cas=0,flag,m;
double t,g[50][50];
char s[50],c[50],b[50];
map<string,int>a;
while(~scanf("%d",&n)&&n)
{
a.clear();
tot=1;
for(i=0; i<=n; i++)
for(j=0; j<=n; j++)
g[i][j]=0;
for(i=0; i<n; i++)
{
scanf(" %s ",s);
if(a[s]==0) a[s]=tot++;
}
flag=1;
scanf("%d",&m);
while(m--)
{
scanf("%s%lf%s",c,&t,b);
g[a[c]][a[b]]=t;
}
for(k=1; k<=n; k++)
for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
{
if(g[i][j]<g[i][k]*g[k][j])
g[i][j]=g[i][k]*g[k][j];
}
for(i=1; i<=n; i++)
{
if(g[i][i]>1)
{
flag=0;
break;
}
//printf("%lf\n",g[i][i]);
}
printf("Case %d: ",++cas);
if(flag==0) printf("Yes\n");
else printf("No\n");
}
return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。http://xiang578.top/