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;
}



posted on 2008-07-15 19:19 gong 阅读(138) 评论(0)  编辑 收藏 引用


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


<2008年7月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

导航

统计

常用链接

留言簿(6)

随笔档案

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜