- 小可的环
code
- @ 2026-2-6 10:39:04
void solve() {
int n, m;
cin >> n >> m;
vector e(n + 1, vector<pii>());
for (int i = 1, u, v, w; i <= m; i++) {
cin >> u >> v >> w;
e[u].push_back({v, w});
e[v].push_back({u, w});
}
const int inf = 1e9;
int res = inf;
auto wk = [&] (int u, int v, int w) {
if (u == v) return;
vector<int> dis(n + 1, inf);
dis[u] = 0;
priority_queue<pii, vector<pii>, greater<pii>> q;
q.push({0, u});
vector<bool> visi(n + 1);
while (q.size()) {
auto [D, x] = q.top(); q.pop();
if (visi[x]) continue;
visi[x] = 1;
for (auto [y, w] : e[x]) {
if ((x == u && y == v) || (x == v && y == u)) continue;
if (dis[y] > dis[x] + w) {
dis[y] = dis[x] + w;
q.push({dis[y], y});
}
}
}
// db(dis[v], u, v, w);
res = min(res, dis[v] + w);
};
for (int u = 1; u <= n; u++) for (auto [v, w] : e[u]) {
wk(u, v, w);
}
if (res == inf) {
cout << "No solution.";
} else {
cout << res;
}
}
0 条评论
目前还没有评论...
信息
- ID
- 417
- 时间
- ms
- 内存
- MiB
- 难度
- 9
- 标签
- 递交数
- 124
- 已通过
- 14
- 上传者