Restoring Road Network

D - Restoring Road Network



Time limit : 2sec / Memory limit : 256MB

Score : 500 points

Problem Statement

In Takahashi Kingdom, which once existed, there are N cities, and some pairs of cities are connected bidirectionally by roads. The following are known about the road network:

  • People traveled between cities only through roads. It was possible to reach any city from any other city, via intermediate cities if necessary.
  • Different roads may have had different lengths, but all the lengths were positive integers.

Snuke the archeologist found a table with N rows and N columns, A, in the ruin of Takahashi Kingdom. He thought that it represented the shortest distances between the cities along the roads in the kingdom.

Determine whether there exists a road network such that for each u and v, the integer Au,v at the u-th row and v-th column of A is equal to the length of the shortest path from City u to City v. If such a network exist, find the shortest possible total length of the roads.

Constraints

  • 1≤N≤300
  • If ij1≤Ai,j=Aj,i≤109.
  • Ai,i=0

Inputs

Input is given from Standard Input in the following format:

N
A1,1 A1,2  A1,N
A2,1 A2,2  A2,N

AN,1 AN,2  AN,N

Outputs

If there exists no network that satisfies the condition, print -1. If it exists, print the shortest possible total length of the roads.


Sample Input 1

Copy

3
0 1 3
1 0 2
3 2 0

Sample Output 1

Copy

3

The network below satisfies the condition:

  • City 1 and City 2 is connected by a road of length 1.
  • City 2 and City 3 is connected by a road of length 2.
  • City 3 and City 1 is not connected by a road.

Sample Input 2

Copy

3
0 1 3
1 0 1
3 1 0

Sample Output 2

Copy

-1

As there is a path of length 1 from City 1 to City 2 and City 2 to City 3, there is a path of length 2 from City 1 to City 3. However, according to the table, the shortest distance between City 1 and City 3 must be 3.

Thus, we conclude that there exists no network that satisfies the condition.


Sample Input 3

Copy

5
0 21 18 11 28
21 0 13 10 26
18 13 0 23 13
11 10 23 0 17
28 26 13 17 0

Sample Output 3

Copy

82

Sample Input 4

Copy

3
0 1000000000 1000000000
1000000000 0 1000000000
1000000000 1000000000 0

Sample Output 4

Copy

3000000000

//题意:给出一个 n * n 的最短路表,问此表需要最少连通多少边多少才能实现。、

//显然,对于每对点都要考虑,如果,可以通过第三方点实现,就用第三方,否则,只能连本身的边

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 #define LL long long
 4 #define eps 1e-8
 5 #define MX 305
 6
 7 int n;
 8 int G[MX][MX];
 9
10 int main()
11 {
12     while (scanf("%d",&n)!=EOF)
13     {
14         for (int i=1;i<=n;i++)
15             for (int j=1;j<=n;j++)
16                 scanf("%d",&G[i][j]);
17         LL ans =0;
18         bool ok=1;
19         for (int i=1;i<=n;i++)
20         {
21             for (int j=1;j<=n;j++)
22             {
23                 if (i==j) continue;
24                 bool need=1;
25                 for (int k=1;k<=n;k++)
26                 {
27                     if (k==i||k==j) continue;
28                     if (G[i][j]>G[i][k]+G[k][j])  ok=0;
29                     if (G[i][j]==G[i][k]+G[k][j]) need=0;
30                 }
31                 if (need) ans+=G[i][j];
32             }
33         }
34         if (ok) printf("%lld\n",ans/2);
35         else printf("-1\n");
36     }
37     return 0;
38 }

时间: 2024-08-05 17:23:20

Restoring Road Network的相关文章

AtCoder Regular Contest 083 D:Restoring Road Network

In Takahashi Kingdom, which once existed, there are N cities, and some pairs of cities are connected bidirectionally by roads. The following are known about the road network: People traveled between cities only through roads. It was possible to reach

Restoring Road Network(Floyd算法的推广)

个人心得:看懂题目花费了不少时间,后面实现确实时间有点仓促了,只是简单的做出了判断是否为真假的情况, 后面看了题解发现其实在判断时候其实能够一起解决的,算了,基础比较差还是慢慢的来吧. 题意概述: 就是给定一个N阶方阵,规定Auv,为u到v的最短路径,若给出的数据存在其他通路少于此时的值则不存在即为假, 解决方法就是利用Floyd算法进行单源最短路的判断,只要后面的矩阵与原来的不相符就是假的.真的的时候,是要求 存在的最短总路程使得矩阵的数成立,我画了下就是只要存在从其他城市能够转到目的地的时候

AtCoder Beginner Contest 074 D - Restoring Road Network(Floyd变形)

题目链接:点我点我 题意:给出一个最短路的图,询问是否正确,如果正确的话,输出遍历所有点的最短路径和. 题解:判断是否正确的,直接再一次Floyd,判断是否会有A[i][k]+A[k][j]<A[i][j](通过中间点k使得两点间距离更短),如果有的话,直接输出-1. 要遍历到所有道路,并且路径和最小,我们可以尽可能用用中间点的路径(A[i][k]+A[k][j]==A[i][j]),这样本来遍历两个点,就可以遍历3个点了, 最后加的时候记得不要从重复加,从最小点往后加,不要再往前加,不然就重复

【Atcoder】ARC083 D - Restoring Road Network

[算法]图论,最短路? [题意]原图为无向连通图,现给定原图的最短路矩阵,求原图最小边权和,n<=300. [题解]要求最小边权和下,原图的所有边一定是所连两端点的最短路. 那么现在将所有最短路作为边加入原图,考虑删边. 对于(u,v),若存在点w使得(u,v)=(u,w)+(w,v),则(u,v)可以删去.(btw,若是>则无解) 复杂度O(n^3). #include<cstdio> #include<cstring> #include<cctype>

[Arc083D/At3535] Restoring Road Network - 最短路,结论

[Arc083D/At3535] 有 \(N\) 个城市,城市与城市之间用长度为整数的无向道路连接. 现有一考古学家找到了一张 \(N×N\) 的表 \(A\) ,这张表代表了这 \(N\) 座城市两两之间的最短路.即表中的第 \(u\) 行第 \(v\)列的值代表了从城市 \(u\)到\(v\)的最短路长度. 问能否根据这张表,求出高桥王国的最小道路长度总和. ---------- 考虑到原图中的边一定就在这个最短路矩阵中,我们只需要保留其中的一些,让它们"表示"出其它就可以了 那么

HNU 13411 Reverse a Road II(最大流+BFS)经典

Reverse a Road II Time Limit: 10000ms, Special Time Limit:25000ms, Memory Limit:65536KB Total submit users: 10, Accepted users: 6 Problem 13411 : No special judgement Problem description JAG Kingdom is a strange kingdom such that its N cities are con

【POJ 3204】Ikki&#39;s Story I - Road Reconstruction

Ikki's Story I - Road Reconstruction Time Limit: 2000MS   Memory Limit: 131072K Total Submissions: 7089   Accepted: 2039 Description Ikki is the king of a small country – Phoenix, Phoenix is so small that there is only one city that is responsible fo

[POI2014]HOT-Hotels

https://www.luogu.org/problem/show?pid=3565 枚举中间点 枚举中间点的子树 枚举距离 如果只有3个子树,那么对答案的贡献为a*b*c 假设现在来了第4个子树,那么答案会增加 d*(a*b+a*c+b*c) 再来第5个,答案增加e*(a*b+a*c+a*d+b*c+b*d+c*d) 括号里的数好像有点儿规律 用c2维护来维护它 d*(a*b+a*c+b*c)变到 e*(a*b+a*c+a*d+b*c+b*d+c*d) 增加了 e*(a+b+c) 所以用再用

poj1251 最小生成树

Description The Head Elder of the tropical island of Lagrishan has a problem. A burst of foreign aid money was spent on extra roads between villages some years ago. But the jungle overtakes roads relentlessly, so the large road network is too expensi