在蒜国有n座城市,这n座城市由n-1条道路连接,任意两个城市之间都可以相互到达。
身为蒜国国王的蒜头君在想,在蒜国任意两个城市之间的距离之和是多少。
如图所示:
1到2的距离是: 3。
2到3的距离是: 5。
1到3的距离是: 2。
所以任意两座城市之间的距离和为: 10。
那么给你20座城市,然后给出这19条道路(双向)
这19条道路我们用u, v, w来表示城市u,V之间有一条长度为w的道路。
下面为这19条道路:
输入样例:
16 14 79
11 5 63
3 19 26
13 12 41
14 7 28
15 3 7
4 5 18
20 7 43
10 16 38
8 4 55
1 12 100
6 5 10
7 6 78
18 7 77
19 16 6
12 18 47
2 3 63
9 19 17
17 2 100
输出样例:
无
Floyd最短路径算法解答
#include<bits/stdc++.h>
using namespace std;
const int N = 1e2;
int f[N][N];
int main()
{
memset(f, 0x3f, sizeof f);
for (int i = 0; i < 19; i++)
{
int x, y, z;
cin >> x >> y >> z;
f[x][y] = f[y][x] = z;
}
int n = 20;
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][k] + f[k][j], f[i][j]);
}
}
}
int sum = 0;
for (int i = 1; i <= n; i++)
{
for (int j = i + 1; j <= n; j++)
{
sum += f[i][j];
}
}
cout << sum << endl;
return 0;
}