zoukankan      html  css  js  c++  java
  • 最短路 floyd poj1125 Stockbroker Grapevine

    题目连接:http://poj.org/problem?id=1125

    题目就是要求你算每个点在能够到达所有点的情况下求到达所有点的费时中最大的最小值及其起点,如果不能到达直接输出disjoint。

    代码

    View Code
     1 #include <iostream>
     2 #include <stdio.h>
     3 #define max 1000000
     4 using namespace std;
     5 int map[106][105];
     6 void init(int n)
     7 {
     8     int i,j;
     9     for(i = 1;i <= n;i++)
    10     {
    11         for(j = 1;j <= n;j++)
    12         map[i][j] = max;
    13         map[i][i] = 0;
    14     }
    15 }
    16 void floyd(int n)
    17 {
    18     int k,i,j;
    19 
    20     for(k = 1;k <= n;k++)
    21     {
    22         for(i = 1;i <= n;i++)
    23         {
    24             for(j = 1;j <= n;j++)
    25             {
    26                 if(map[i][j] > map[i][k]+map[k][j])
    27                 map[i][j] = map[i][k]+map[k][j];
    28             }
    29         }
    30     }
    31 }
    32 
    33 int main()
    34 {
    35     int n,m,v,t,ansi,i,j;
    36     while(scanf("%d",&n)&&n)
    37     {
    38         init(n);
    39         for(i = 1;i <= n;i++)
    40         {
    41             scanf("%d",&m);
    42             while(m--)
    43             {
    44                 scanf("%d%d",&v,&t);
    45                 map[i][v] = t;
    46 
    47             }
    48 
    49         }
    50         floyd(n);
    51         int leap = 1;
    52         int ans,sub;
    53         ans = max,sub = -1;
    54         for(i = 1;i <= n;i++)
    55         {
    56             sub = -1;
    57             for(j = 1;j <= n;j++)
    58             {
    59                 if(map[i][j] > max &&i != j)
    60                 leap = 0;
    61                 else if(map[i][j] > sub &&i != j)
    62                 sub = map[i][j];
    63             }
    64 
    65             if(sub < ans)
    66             ans = sub,ansi = i;
    67         }
    68 
    69        if(leap)
    70         printf("%d %d\n",ansi,ans);
    71         else
    72        puts("disjoint");
    73 
    74 
    75     }
    76     return 0;
    77 }
  • 相关阅读:
    2020年MongoDB 企业应用实战 基础 复制集 分片集群
    2020年Redis5.0 从入门到企业应用实战
    2020年Jumpserver1.5.8企业生产部署指南
    python单例与数据库连接池
    python 异常处理
    python 正则
    python 多线程
    python 队列
    python 闭包与装饰器
    程序员面试资源集锦
  • 原文地址:https://www.cnblogs.com/0803yijia/p/2768308.html
Copyright © 2011-2022 走看看