社区讨论
dijkstra90分qwq,求调
P3905道路重建参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @mdogjhw8
- 此快照首次捕获于
- 2025/07/29 19:32 7 个月前
- 此快照最后确认于
- 2025/07/30 09:29 7 个月前
CPP
#include <bits/stdc++.h>
using namespace std;
typedef pair<int, int> pii;
const int N = 110;
int g[N][N];
int n, m, u[N], v[N];
int l[N][N];
int dis[N], vis[N];
void dijkstra(int s)
{
priority_queue<pii> pq;
pq.push({0, s});
dis[s] = 0;
while (!pq.empty())
{
pii pi = pq.top(); pq.pop();
int u = pi.second;
vis[u] = true;
for (int v = 1; v <= n; v++)
{
if (g[u][v] == -1) continue;
if (vis[v]) continue;
if (dis[u] + g[u][v] < dis[v])
{
dis[v] = dis[u] + g[u][v];
pq.push({-dis[v], v});
}
}
}
}
int main()
{
memset(g, -1, sizeof g);
cin >> n >> m;
for (int i = 1; i <= m; i++)
{
cin >> u[i] >> v[i];
cin >> l[u[i]][v[i]];
l[v[i]][u[i]] = l[u[i]][v[i]];
g[u[i]][v[i]] = 0, g[v[i]][u[i]] = 0;
}
int d;
cin >> d;
for (int i = 1; i <= d; i++)
{
int x, y;
cin >> x >> y;
g[x][y] = l[x][y], g[y][x] = l[y][x];
}
memset(dis, 0x3f, sizeof dis);
memset(vis, false, sizeof vis);
int s, t;
cin >> s >> t;
dijkstra(s);
cout << dis[t] << endl;
return 0;
}
第九个点WA
回复
共 1 条回复,欢迎继续交流。
正在加载回复...