zoukankan      html  css  js  c++  java
  • uva 10048(floyd最短路)

    求解从一个定点到另一个定点经过的路径中的最长边权值。

    这道题是floyd算法的改进dis[i][j] = min(dis[i][j], max(dis[i][k], dis[k][j]));

    dp方程不难退出。但是我被细节问题卡了一节课。优势最后一组样例输出了空行0.0

    代码如下:

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <cstdlib>
     5 #include <cmath>
     6 #include <algorithm>
     7 #define LEN 1010
     8 #define INF 0x7fffffff
     9 using namespace std;
    10 
    11 int Map[LEN][LEN], dis[LEN][LEN];
    12 int n, m, q, cnt = 1;
    13 
    14 void init()
    15 {
    16     for(int i=0; i<LEN; i++){
    17         for(int j=0; j<LEN; j++){
    18             Map[i][j] = INF;
    19             if(i==j)Map[i][j] = 0;
    20         }
    21     }
    22 }
    23 
    24 void floyd()
    25 {
    26     for(int i=1; i<=n; i++){
    27         for(int j=1; j<=n; j++){
    28             dis[i][j] = Map[i][j];
    29         }
    30     }
    31     for(int k=1; k<=n; k++){
    32         for(int i=1; i<=n; i++){
    33             for(int j=1; j<=n; j++){
    34                 dis[i][j] = min(dis[i][j], max(dis[i][k],dis[k][j]));
    35             }
    36         }
    37     }
    38 }
    39 
    40 int main()
    41 {
    42 //    freopen("in.txt", "r", stdin);
    43 
    44     int a, b, c;
    45     while(scanf("%d%d%d", &n, &m, &q)!=EOF){
    46         if(n==m && m==q && q==0) break;
    47         init();
    48         for(int i=0; i<m; i++){
    49             scanf("%d%d%d", &a, &b, &c);
    50             Map[a][b] = Map[b][a] = c;
    51         }
    52         floyd();
    53         if(cnt!=1)printf("
    ");
    54         printf("Case #%d
    ", cnt++);
    55         for(int i=0; i<q; i++){
    56             scanf("%d%d", &a, &b);
    57             if(dis[a][b]!=INF) printf("%d
    ", dis[a][b]);
    58             else printf("no path
    ");
    59         }
    60     }
    61     return 0;
    62 }
    View Code
    奔跑吧!少年!趁着你还年轻
  • 相关阅读:
    Vmware安装CentOs7.4
    记录一次简单的springboot发送邮件功能
    jenkins 脱机下 安装插件失败
    centos8系统下docker安装jenkins
    Flask快速入门(9) — 请求扩展
    Flask快速入门(8) — 闪现flash
    Flask快速入门(7) — session
    Flask快速入门(6) — 常见的请求与响应参数
    Flask快速入门(5) — 模板渲染
    Flask快速入门(4) — CBV写法与解析
  • 原文地址:https://www.cnblogs.com/shu-xiaohao/p/3440920.html
Copyright © 2011-2022 走看看