poj 1125 Stockbroker Grapevine

题意:给出一个有N个点的图,求每一个点到其他各点最长距离中的最小值。

思路:读懂了题意,这题就是一个水到不能再水的题。就是一个flody,然后求出任意两点的最小距离。然后一个二重循环就行了。

代码:

View Code
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream>
#include <algorithm>
#include <queue>
#include <math.h>
#define  N 105
#define  INF 100000000
using namespace std ;

int map[N][N] ;
int n ;

int main()
{
    int i , j , k , x , y , t ;

    while ( scanf ( "%d" , &n ) , n )
    {
        for ( i = 1 ; i <= n ; i++ )
            for ( j = 1 ; j <= n ; j++ )
                map[i][j] = INF ;

        for ( i = 1 ; i <= n ; i++ )
        {
            scanf ( "%d" , &t );
            while ( t-- )
            {
                scanf ( "%d%d" , &x , &y );
                map[i][x] = y ;
            }
        }

        for ( k = 1 ; k <= n ; k++ )
            for ( i = 1 ; i <= n ; i++ )
                for ( j = 1 ; j <= n ; j++ )
                    if( map[i][j] > map[i][k] + map[k][j] )
                        map[i][j] = map[i][k] + map[k][j] ;

        /*for ( i = 1 ; i <= n ; i++ )
            for ( j = 1 ; j <= n ; j++ )
              printf ( "%d %d = %d\n" , i , j , map[i][j] );*/
                    
        int ans = INF ;
        int minx , pos ;
        for ( i = 1 ; i <= n ; i++ )
        {
            minx = -1 ;
            for ( j = 1 ; j <= n ; j++ )
                if ( i != j && map[i][j] > minx )
                minx = map[i][j] ;
            if ( minx < ans )
            {
                ans = minx ;
                pos = i ;
            }
        }

        if ( ans == INF )
            printf ( "disjoint\n" );
        else
            printf ( "%d %d\n" , pos , ans ) ;
    }
    return 0 ;
}

再次痛恨自己的英语水平,什么时候能够顺利的读下来题啊。

转载于:https://www.cnblogs.com/misty1/archive/2012/10/16/2726769.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值