• 【HDU 1599】 Find the mincost route


    【题目链接】

              点击打开链接

    【算法】

             弗洛伊德求最小环模板

             我们知道,在一个环上,一定有一个有且仅有一个编号最大的点,设这个点为k,起点为i,终点为j,那么

             mincost = dist[i][j] + cost[j][k] + cost[k][i] (dist[i][j]为i到j的最短路)

             所以只需枚举i,j,k,在计算最短路的同时,计算最小环,即可

    【代码】

             

    #include<bits/stdc++.h>
    using namespace std;
    #define MAXN 110
    const int INF = 1e8;
    
    int i,j,n,m,a,b,c;
    int g[MAXN][MAXN],mp[MAXN][MAXN];
    
    inline void floyd()
    {
        int i,j,k,ans = INF;
        for (k = 1; k <= n; k++)
        {
            for (i = 1; i < k; i++)
            {
                for (j = i + 1; j < k; j++)
                {
                    ans = min(ans,g[i][j]+mp[j][k]+mp[k][i]); 
                }    
            } 
            for (i = 1; i <= n; i++)
            {
                for (j = 1; j <= n; j++)
                {
                    g[i][j] = min(g[i][j],g[i][k]+g[k][j]);
                } 
            }
        }    
        if (ans == INF) puts("It's impossible.");
        else printf("%d
    ",ans); 
    }
    
    int main()
    {
        
        while (scanf("%d%d",&n,&m) != EOF)
        {
            for (i = 0; i <= n; i++)
            {
                for (j = 0; j <= n; j++)
                {
                    g[i][j] = mp[i][j] = INF;
                }
            }
            for (i = 1; i <= m; i++)
            {
                scanf("%d%d%d",&a,&b,&c);
                g[a][b] = mp[a][b] = min(g[a][b],c);
                g[b][a] = mp[b][a] = min(g[b][a],c);
            } 
            floyd();
        }
        
        return 0;
    }
  • 相关阅读:
    【math】共线性的影响分析
    【colab】挂载google网盘
    【ML】非均衡样本处理
    phpwind < v6 版本命令执行漏洞
    Uc爆破工具
    shodan:黑客搜索引擎
    webshell下执行命令脚本汇集
    Android利用Fiddler进行网络数据抓包
    150个在线代理站点
    PHP filesystem attack vectors
  • 原文地址:https://www.cnblogs.com/evenbao/p/9196345.html
Copyright © 2020-2023  润新知