• [Arc083D/At3535] Restoring Road Network


    [Arc083D/At3535]

    (N) 个城市,城市与城市之间用长度为整数的无向道路连接。

    现有一考古学家找到了一张 (N×N) 的表 (A) ,这张表代表了这 (N) 座城市两两之间的最短路。即表中的第 (u) 行第 (v)列的值代表了从城市 (u)(v)的最短路长度。

    问能否根据这张表,求出高桥王国的最小道路长度总和。

    ——————————

    考虑到原图中的边一定就在这个最短路矩阵中,我们只需要保留其中的一些,让它们“表示”出其它就可以了

    那么我们是否可以将最短路矩阵看成图,所有“冗余”边删掉,就得到了结果呢?

    猜得这样得出的结果就是最优的

    #include <bits/stdc++.h>
    using namespace std;
    
    #define int long long
    const int N = 305;
    int n,g[305][305],ans;
    
    signed main() {
        cin>>n;
        for(int i=1;i<=n;i++) {
            for(int j=1;j<=n;j++) {
                cin>>g[i][j];
                ans+=g[i][j];
            }
        }
        for(int i=1;i<=n;i++) {
            for(int j=1;j<=n;j++) {
                for(int k=1;k<=n;k++) {
                    if(i==j) continue;
                    if(j==k) continue;
                    if(k==i) continue;
                    if(g[i][j] > g[i][k]+g[k][j]) {
                        cout<<-1;
                        return 0;
                    }
                    if(g[i][j] == g[i][k]+g[k][j]) {
                        ans-=g[i][j];
                        break;
                    }
                }
            }
        }
        cout<<ans/2ll<<endl;
    }
    
  • 相关阅读:
    python3下import MySQLdb出错问题
    循环单链表
    双端链表
    单链表
    静态链表
    hotspot目录结构
    volatile分析
    centos7 python环境安装
    jconsole连接本地进程报安全连接失败
    redis分布式锁
  • 原文地址:https://www.cnblogs.com/mollnn/p/12268400.html
Copyright © 2020-2023  润新知