PKU 2240 Arbitrage

PKU 2240 Arbitrage
#include  < cstdio >
#include 
< cstring >
#include 
< vector >

using   namespace  std;

int     n;
double  g[ 35 ][ 35 ];
char    dict[ 35 ][ 100 ];

int  find(  char  s[ 100 ] )
{
    
forint i= 1; i<= n; ++i )
    
if( strcmp( dict[i], s )== 0 ) return i;
}
    


int  main()
{
    
int test= 1;
    
    
while( scanf("%d",&n), n )
    
{
        
forint i= 1; i<= n; ++i )
        scanf(
"%s", dict[i] );
        
        
int m; scanf("%d"&m );
        memset( g, 
0sizeof(g) );
        
        
forint i= 0; i< m; ++i )
        
{
            
char s1[100], s2[100];
            
double v;
            
            scanf(
"%s %lf %s", s1, &v, s2 );
            g[ find(s1) ][ find(s2) ]
= v;
        }

        
        
forint k= 1; k<= n; k++ )
           
forint i= 1; i<= n; i++ )
              
forint j= 1; j<= n; j++ )
              
{
                    
double temp= g[i][k]* g[k][j];
                    
if( temp> g[i][j] ) g[i][j]= temp;
              }

        
        
bool ok= false;      
        
forint i= 1; i<= n; i++ )
        
if( g[i][i]> 1 ) {
            ok
= truebreak; }

            
        
if( ok ) printf("Case %d: Yes\n", test++ );
        
else     printf("Case %d: No\n", test++ );
    }

    
    
return 0;
}

    

你可能感兴趣的:(PKU 2240 Arbitrage)