zoukankan      html  css  js  c++  java
  • 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 ;
    }

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

  • 相关阅读:
    ql语句中left join和inner join中的on与where的区别分析
    C#如何通过属性名称反射出属性本身
    mvc中查询字符串请求过长
    SQL Server 中 EXEC 与 SP_EXECUTESQL 的区别
    后台二进制文件 在前台下载方法总结
    C#中try catch finally的执行顺序
    python生成随机密码
    Bridged(桥接模式)
    NAT(地址转换模式)
    TCP协议详解
  • 原文地址:https://www.cnblogs.com/misty1/p/2726769.html
Copyright © 2011-2022 走看看