1 条题解
-
0
Floyd 求最小环模板
#include <bits/stdc++.h> using namespace std; using ll = long long; const int N = 110; ll dis[N][N], w[N][N]; int n, m, u, v, f; ll ans = LLONG_MAX; void floyd() { for (int k = 1; k <= n; k++) { for (int i = 1; i < k; i++) { for (int j = i + 1; j < k; j++) { ans = min(ans, dis[i][j] + w[j][k] + w[k][i]); } } for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { dis[i][j] = min(dis[i][j], dis[i][k] + dis[k][j]); } } } } int main() { cin >> n >> m; for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { if (i != j) w[i][j] = dis[i][j] = INT_MAX; } } for (int i = 1; i <= m; i++) { cin >> u >> v >> f; dis[u][v] = dis[v][u] = w[u][v] = w[v][u] = f; } floyd(); if (ans >= INT_MAX) { cout << "No solution."; } else { cout << ans; } return 0; } ```cpp
- 1
信息
- ID
- 12506
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 6
- 标签
- 递交数
- 60
- 已通过
- 20
- 上传者