社区讨论
裸dijkstra 10pts,求调
P1339[USACO09OCT] Heat Wave G参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @lunn6kda
- 此快照首次捕获于
- 2024/04/06 13:16 2 年前
- 此快照最后确认于
- 2024/04/06 14:59 2 年前
code:
CPP#include <bits/stdc++.h>
using namespace std;
bool vst[2510], ctd[2510][2510];
int g[2510][2510], dis[2510], n, m, a, b, c, k, now = 2e9, v0, t;
int main()
{
cin >> n >> m >> v0 >> t;
k = v0;
vst[v0] = 1;
for (int i = 0; i < m; i++)
{
cin >> a >> b >> c;
if (ctd[a][b]) g[a][b] = g[b][a] = min(c, g[a][b]);
else g[a][b] = g[b][a] = c;
ctd[a][b] = ctd[b][a] = 1;
}
for (int i = 1; i <= n; i++) if (i != v0) dis[i] = 1e9;
for (int it = 1; it <= n; it++)
{
for (int i = 1; i <= n; i++)
{
if (ctd[k][i]) dis[i] = min(dis[k] + g[k][i], dis[i]);
}
for (int i = 1; i <= n; i++)
{
if (not vst[i] and dis[i] < now) k = i, now = dis[i];
}
vst[k] = 1;
}
cout << dis[t];
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...