zoukankan      html  css  js  c++  java
  • poj 1125 (floyd)

    http://poj.org/problem?id=1125

    题意:在经纪人的圈子里,他们各自都有自己的消息来源,并且也只相信自己的消息来源,他们之间的信息传输也需要一定的时间。现在有一个消息需要传播,求从哪个经纪人开始传播所需的时间是最短的,所有经纪人都要收到信息,输出时间和那个经纪人的编号。

    思路:用floyd算出两个点之间的短的传播时间。当这个点传播到某个点的时间最大时,要么是传播不到,要么这个点就是最后一个经纪人所需要接受到信息的最短时间

     1 #include <stdio.h>
     2 #include <string.h>
     3 #define inf 999999
     4 
     5 int graph[ 105 ][ 105 ],n;
     6 
     7 
     8 void floyd()
     9 {
    10     int k,i,j,Min,loc,Minroad;
    11     for( k = 1 ; k <= n ; k++ )        //这五行代码就是floyd的思想,从某个点到某个点的最短路径有可能是他们直接相连的,也有可能是通过其他的点相连接的。
    12         for( i = 1 ; i <= n ; i++ )
    13             for( j = 1 ; j <= n ; j++ )
    14                 if( i != j && graph[ i ][ j ] > graph[ i ][ k ] + graph[ k ][ j ] )    
    15                     graph[ i ][ j ] = graph[ i ][ k ] + graph[ k ][ j ];
    16         Min = inf;
    17     for( i = 1 ; i <= n ; i++ )         //枚举每个经纪人。
    18     {
    19         Minroad = 0;
    20         for( j = 1 ; j <= n ; j++)
    21             if( i != j && Minroad < graph[ i ][ j ] )    //求出他们的所需的最长时间
    22                 Minroad = graph[ i ][ j ];
    23         if( Min > Minroad )
    24         {
    25             Min = Minroad;
    26             loc = i;
    27         }
    28     }
    29     printf("%d %d
    ",loc,Min);
    30 }
    31 
    32 
    33 int main()
    34 {
    35  //   freopen("in.txt","r",stdin);
    36     int x,a,b;
    37     while(scanf("%d",&n),n)
    38     {
    39         for(int i = 0 ; i <= n ; i++)
    40             for(int j = 0 ; j <= n ; j++)
    41             {
    42                  graph[ i ][ j ] = inf;
    43             }
    44         for(int i = 1 ; i <= n ; i++)
    45         {
    46             scanf("%d",&x);
    47             for(int j =0  ; j < x ; j++)
    48             {
    49                 scanf("%d%d",&a,&b);
    50                 graph[ i ][ a ] = b;
    51             }
    52         }
    53         floyd();
    54     }
    55     return 0;
    56 }
  • 相关阅读:
    *VC编程规范
    C++的va_start() va_end()函数应用(转)
    * C++类的分解,抽象类与纯虚函数的需要性
    *C++中的回调
    *C++中使用接口
    C++模版使用
    *获取mac地址的方法
    *数字——字符之间的转换(转)
    eclipse雕虫小技一:eclipse打开文件目录
    Hibernate升级后注解方式的对象关系映射
  • 原文地址:https://www.cnblogs.com/Tree-dream/p/5731802.html
Copyright © 2011-2022 走看看