zoukankan      html  css  js  c++  java
  • 洛谷P1613 跑路

    这么简单的题都想了半天,肯定是智商低

    看起来对Floyd的掌握还不够熟练呢

    总之,把2^k的状态扔在最外围循环就ok了

    // luogu-judger-enable-o2
    #include <cstdio>
    #include <cstring>
    #include <iostream>
    #include <algorithm>
    using namespace std;
    const int MAXN = 50 + 2;
    
    int N, M;
    bool d[MAXN][MAXN][63];
    int f[MAXN][MAXN];
    
    int main()
    {
        cin>>N>>M;memset(f, 0x3f, sizeof(f));
        for(int i = 1, u, v; i <= M; i++){
            scanf("%d%d", &u, &v);
            d[u][v][0] = 1, f[u][v] = 1;
        }
        
        for(int p = 1; p < 63; p++)
            for(int k = 1; k <= N; k++)
                for(int i = 1; i <= N; i++)
                    for(int j = 1; j <= N; j++)
                        if(d[i][k][p - 1] && d[k][j][p - 1])
                            d[i][j][p] = 1, f[i][j] = 1;
        
        for(int k = 1; k <= N; k++)
            for(int i = 1; i <= N; i++)
                for(int j = 1; j <= N; j++)
                        f[i][j] = min(f[i][j], f[i][k] + f[k][j]);
        cout<<f[1][N]<<endl;
        return 0;
    }
  • 相关阅读:
    Zabbix——1
    Hive 基础知识——01
    Vim快捷命令
    Shell——2
    Shell——6
    Shell——4
    Shell——3
    Shell——1
    Hive 安装和配置以及基本语法——02
    Shell——5
  • 原文地址:https://www.cnblogs.com/wsmrxc/p/9291737.html
Copyright © 2011-2022 走看看