#include <stdio.h>
#include 
<stdlib.h>
#include 
<string.h>

#define eps  1e-10

struct Node
{
    
double rate, com;
    
int    link;
    Node()
{}
    Node( 
double a, double b, int c ): rate(a), com(b), link(c){}
}
;

Node   map[
110][110];
double v, result[110];
int    m, n, s;

bool  bellman()
{
    memset( result, 
0sizeof(result) );
    result[s]
= v;
    
    
while( result[s]<= v+ eps )
    
{
        
bool ok= false;
        
forint i= 1; i<= n; ++i )
            
forint j= 1; j<= n; j++ )
                
if( map[i][j].link> 0 && result[j]+ eps< ( result[i]- map[i][j].com ) * map[i][j].rate )
                
{
                    result[j]
= ( result[i]- map[i][j].com ) * map[i][j].rate;
                    ok
= true;
                }

        
        
if!ok ) break;
    }

    
    
if( result[s]> v+ eps ) return true;
    
else                    return false;
}


int main()
{
    
while( scanf("%d%d%d%lf"&n, &m, &s, &v)!= EOF )
    
{
        
forint i= 0; i<= n; ++i )
        
forint j= 0; j<= n; ++j )  map[i][j].link= 0;
        
        
forint i= 0; i< m; ++i )
        
{
            
int a, b;
            
double r1,c1,r2,c2;
            
            scanf(
"%d%d%lf%lf%lf%lf"&a, &b, &r1, &c1, &r2, &c2 );
            map[a][b]
= Node( r1, c1, 1 );
            map[b][a]
= Node( r2, c2, 1 );
        }

        
        
if( bellman() ) printf("YES\n");
        
else            printf("NO\n");
    }

    
    
return 0;
}

posted on 2008-11-06 20:26 Darren 阅读(411) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理