• uva 10048【Audiophobia】


    这一题不错。。。将floyd变了变形。。。

    代码如下:
     1 #include <cstdio>
     2 #include <cstring>
     3 #include <algorithm>
     4 
     5 int point,street,que;
     6 int g[1010][1010];
     7 int cas;
     8 
     9 bool init()
    10 {
    11     scanf("%d%d%d",&point,&street,&que);
    12     if(point == 0&&street == 0&&que == 0)
    13         return false;
    14 
    15     if(cas > 1)//个人觉得这些东西比较恶心。。。
    16         printf("\n");
    17     memset(g,-1,sizeof(g));
    18     int a,b,d;
    19     for(int i = 0;i < street;i ++)
    20     {
    21         scanf("%d%d%d",&a,&b,&d);
    22         g[a][b] = g[b][a] = d;
    23         g[a][a] = g[b][b] = 0;
    24     }
    25     return true;
    26 }
    27 
    28 void floyd()
    29 {
    30     for(int i = 1;i <= point;i ++)
    31     {
    32         for(int j = 1;j <= point;j ++)
    33         {
    34             for(int k = 1;k <= point;k ++)
    35             {
    36                 if(g[j][i] != -1&&g[i][k] != -1)
    37                 {
    38                     int t = std::max(g[j][i],g[i][k]);
    39                     if(g[j][k] == -1)
    40                     {
    41                         g[j][k] = t;
    42                     }
    43                     else 
    44                     {
    45                         g[j][k] = std::min(t,g[j][k]);
    46                     }
    47                 }
    48             }
    49         }
    50     }
    51 }
    52 
    53 int main()
    54 {
    55     cas = 1;
    56     while(init())
    57     {
    58         floyd();
    59         printf("Case #%d\n",cas ++);
    60         for(int i = 0;i < que;i ++)
    61         {
    62             int a,b;
    63             scanf("%d%d",&a,&b);
    64             if(g[a][b] == -1)
    65             {
    66                 printf("no path\n");
    67             }
    68             else
    69             {
    70                 printf("%d\n",g[a][b]);
    71             }
    72         }
    73     }
    74 
    75     return 0;
    76 }
  • 相关阅读:
    动态规划 01背包问题
    日常水题 蓝桥杯基础练习VIP-字符串对比
    本博客导航
    2019 ICPC 南昌 (C E G L)
    [模板]线段树
    [模板]手写双端队列(或普通队列)
    2019 ICPC Asia Yinchuan Regional (G, H)
    与超级源点与超级汇点相关的两题POJ 1062, HDU 4725
    [模板]链式向前星
    [总结]关于反向建图
  • 原文地址:https://www.cnblogs.com/Shirlies/p/2451422.html
Copyright © 2020-2023  润新知