AOJ 0189 Convenient Location (Floyd)

Posted Point

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AOJ 0189 Convenient Location (Floyd)相关的知识,希望对你有一定的参考价值。

题意:

求某一个办公室 到其他所有办公室的 总距离最短  办公室数 不超过10

输入:多组输入,每组第一行为n (1 ≤ n ≤ 45),接下来n行是 (x, y, d),x到y的距离是d
输出:办公室号 和 最短距离

#include <iostream>
#include <stdio.h>
#include <algorithm> 
#include <cstring>
#include <string>
using namespace std;
const int INF = 0x3f3f3f3f;

int n, dp[15][15];

int main()
{
	while (cin >> n && n) 
	{
		int V = 0;
		memset(dp, INF, sizeof dp);
		for (int i = 1; i <= n; ++i) 
		{
			int x, y, v; cin >> x >> y >> v;
			dp[x][y] = dp[y][x] = v;
			V = max(V, max(x, y));
		}
		for (int k = 0; k <= V; ++k)
			for (int i = 0; i <= V; ++i)
				for (int j = 0; j <= V; ++j)
					dp[i][j] = min(dp[i][j], dp[i][k] + dp[k][j]);

		int ans = INF, loc;
		for (int i = 0; i <= V; ++i) 
		{
			int t = 0;
			for (int j = 0; j <= V; ++j) 
			{
				if (i == j) continue;
				t += dp[i][j];
			}
			if (t < ans) ans = t, loc = i;
		}
		cout << loc << ‘ ‘ << ans << endl;
	}
	return 0;
}

以上是关于AOJ 0189 Convenient Location (Floyd)的主要内容,如果未能解决你的问题,请参考以下文章

AOJ 0189(最短路)

挑战程序设计竞赛 2.5 它们其实都是“图”

《挑战程序设计竞赛》课后练习题解集——2.5 它们其实都是“图”

Codefroces 939 C Convenient For Everybody

LeetCode 0189. 轮转数组:额外空间 / 原地反转

0189 案例:仿京东放大镜效果