Bellman Ford(warm up-2 1005)

 

 数据弱,代码有问题,等待修正

 

#include  < iostream >
using   namespace  std;

__int64 lmax
= 0x7FFFFFFF ;
const   long  MAXN = 1200 ;

__int64 hash[MAXN][MAXN];
__int64 Dis[MAXN];

long  Start,End;
long  m,n; // 点,边

int  main()
{
    lmax
= lmax << 10 ;
    
long  T;
    scanf(
" %ld " , & T);

    
while  (T -- )
    {
        scanf(
" %ld " , & m);
        scanf(
" %ld %ld " , & Start, & End);
        scanf(
" %ld " , & n);
        
long  i,ii;
        
for  (i = 0 ;i < MAXN; ++ i)
        {
            Dis[i]
= lmax;
            
for  (ii = 0 ;ii < MAXN; ++ ii)
            {
                hash[i][ii]
= lmax;
            }
        }
        
for  (i = 0 ;i < n; ++ i)
        {
            
long  from,to;
            __int64 cost;
            scanf(
" %ld %ld %I64d " , & from, & to, & cost);
        
            
if  (cost < hash[from][to])
            {
                hash[from][to]
= cost;
            }
        }

        Dis[Start]
= 0 ;

        
long  j,k;
        
for  (i = 1 ;i < m; ++ i)
        {
            
bool  doit = false ;
            
for  (j = 0 ;j < m; ++ j)
            {
                
for  (k = 0 ;k < m; ++ k)
                {
                    
if  (hash[j][k] != lmax && Dis[j] < lmax && Dis[j] + hash[j][k] < Dis[k])
                    {
                        Dis[k]
= Dis[j] + hash[j][k];
                        doit
= true ;
                    }
                }
            }
            
if  ( ! doit)
            {
                
break ;
            }
        }

        
bool  Y = true ;
        
for  (j = 0 ;j < m; ++ j)
        {
            
for  (k = 0 ;k < m; ++ k)
            {
                
if  (Dis[j] < lmax && Dis[j] + hash[j][k] < Dis[k])
                {
                    Y
= false ;
                    
goto  l1;
                }
            }
        }
l1:


        
if  (Dis[End] == lmax ||! Y)
        {
            printf(
" infinity\n " );
        }
        
else
        {
            printf(
" %I64d\n " ,Dis[End]);
        }

    }
    
return   0 ;
}

你可能感兴趣的:(for)