TOJ 1075 Stockbroker Grapevine 解题

TOJ 1075 Stockbroker Grapevine 解题

最短路径问题。
用Floyd-Warshall算法就好。
#include < stdio.h >
#include
< string .h >
int  map[ 110 ][ 110 ];
int  main()
{
    
int n,i,j,k,m,s,t,best,ans,a,b,max;
    
while(scanf("%d",&n),n)
    
{
        memset(map,
3,sizeof(map));
    
//    printf("%d",map[0][0]);
        for(i=1;i<=n;i++)
        
{
            scanf(
"%d",&m);
            
for(j=0;j<m;j++)
            
{
                scanf(
"%d%d",&a,&b);
                map[i][a]
=b;
            }

        }

/**//*
        for(i=1;i<=n;i++)
        {
            for(j=1;j<=n;j++)
                printf("%d ",map[i][j]);
            printf("\n");
        }
*/

            
for(k=1;k<=n;k++)
                
for(s=1;s<=n;s++)
                    
for(t=1;t<=n;t++)
                        
if(map[s][t]>map[s][k]+map[k][t])
                            map[s][t]
=map[s][k]+map[k][t];
            best
=map[0][0];ans=0;
            
for(i=1;i<=n;i++)
            
{
                max
=0;
                
for(j=1;j<=n;j++)if(i!=&& map[i][j]>max)max=map[i][j];
                
//printf("***%d\n",max);
                if(max < best)
                
{
                    best 
= max;
                    ans
=i;
                }

            }

            
if(best!=map[0][0])printf("%d %d\n",ans,best);
            
else printf("disjoint\n");
    }

    
return 0;
}



你可能感兴趣的:(TOJ 1075 Stockbroker Grapevine 解题)