样例过不去求调
查看原帖
样例过不去求调
1211668
WMY_楼主2025/1/21 17:32

RT,总是输出 1321730049。

#include <iostream>

using namespace std;

#define INF 1e18

int n, m;
int G[105][105];
long long f[105][105]; 

void solve() {
	scanf("%d%d", &n, &m);
	for (int i = 1; i <= n; i++)
		for (int j = 1; j <= n; j++)
			if (i != j) G[i][j] = f[i][j] = INF;
	for (int i = 1; i <= m; i++) {
		int u, v, w; scanf("%d%d%d", &u, &v, &w);
		G[u][v] = min(G[u][v], w);
		G[v][u] = min(G[v][u], w);
		f[u][v] = min(f[u][v], 1LL * w);
		f[v][u] = min(f[v][u], 1LL * w);
	}
	long long ans = INF;
	for (int k = 1; k <= n; k++) {
		for (int i = 1; i < k; i++)
			for (int j = i + 1; j < k; j++)
				if (G[i][k] != INF && G[j][k] != INF)
					ans = min(ans, G[i][k] + G[j][k] + f[i][j]);
		for (int i = 1; i <= n; i++)
			for (int j = 1; j <= n; j++)
				f[i][j] = min(f[i][j], f[i][k] + f[k][j]);
	}
	if (ans == INF) {
		puts("No solution.");
		return;
	}
	printf("%lld\n", ans);
}

int main() { solve(); }
2025/1/21 17:32
加载中...