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
    奔跑吧!少年!趁着你还年轻
  • 相关阅读:
    js 获取asp.net TextBox值
    项目笔记一
    如何取GridView中隐藏列的值
    使用bablepolyfill
    border: 0.5px
    选择查询固定位置的数据
    SQL用户数据库权限设置
    Java.1 HelloWorld的分析
    Java.2 面向对象
    【drupal实践】windows下drupal7.22develop版本安装
  • 原文地址:https://www.cnblogs.com/shu-xiaohao/p/3440920.html
Copyright © 2011-2022 走看看