• cf 187B.AlgoRace


    floyd。。。太神奇了(不会floyd(大雾))

    貌似floyd的外层k是保证最短路从起点逐渐向外扩展(而不是乱搞233)

    所以在处理f[i][j]=min(f[i][j],f[i][k]+f[k][j])的时候,f[i][k]都是已经处理过的,而f[k][j]都是没处理的。

    所以这样的话就可以再加1维表示换的次数。(%DP)

     1 #include<bits/stdc++.h>
     2 #define LL long long 
     3 #define  N 100005
     4 using namespace std;
     5 inline int ra()
     6 {
     7     int x=0,f=1; char ch=getchar();
     8     while (ch<'0' || ch>'9') {if (ch=='-') f=-1; ch=getchar();}
     9     while (ch>='0' && ch<='9') {x=x*10+ch-'0'; ch=getchar();}
    10     return x*f;
    11 }
    12 int f[65][65][65],g[65][65][65];
    13 int main()
    14 {
    15     int n=ra(),m=ra(),r=ra();
    16     memset(f,0x7f,sizeof(f));
    17     for (int i=1; i<=m; i++)
    18         for (int j=1; j<=n; j++)
    19             for (int k=1; k<=n; k++)
    20                 g[i][j][k]=ra();
    21     for (int id=1; id<=m; id++)
    22         for (int k=1; k<=n; k++)
    23             for (int i=1; i<=n; i++)
    24                 for (int j=1; j<=n; j++)
    25                     g[id][i][j]=min(g[id][i][j],g[id][i][k]+g[id][k][j]);
    26         for (int i=1; i<=n; i++)
    27             for (int j=1; j<=n; j++)
    28                 for (int k=1; k<=m; k++)
    29                     f[i][j][0]=min(f[i][j][0],g[k][i][j]);
    30         for (int e=1; e<=n; e++)    
    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                         f[i][j][e]=min(f[i][j][e],f[i][k][e-1]+f[k][j][0]);
    35         for (int i=1; i<=r; i++)
    36         {
    37             int s=ra(),t=ra(),k=ra();
    38             k=min(k,n);
    39             printf("%d
    ",f[s][t][k]);
    40         }
    41         return 0;
    42 }
  • 相关阅读:
    判断某个目录下半小时内是否有新文件
    centos 多路径下挂载磁盘目录
    rac多路径下添加lun
    FFmpeg笔记
    FFmpeg报错大全
    Eclipse 安装C语言开发环境
    乱码
    FreeSql提示“【主库】状态不可用,等待后台检查程序恢复方可使用。”错误
    JetBrains Rider安装说明
    博客园终于可以使用了
  • 原文地址:https://www.cnblogs.com/ccd2333/p/6368244.html
Copyright © 2020-2023  润新知