社区讨论
求助!
灌水区参与者 4已保存回复 5
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 5 条
- 当前快照
- 1 份
- 快照标识符
- @m0t7jbkn
- 此快照首次捕获于
- 2024/09/08 14:43 去年
- 此快照最后确认于
- 2025/11/04 21:32 4 个月前
这段代码为什么会CE!
CPP#include <bits/stdc++.h>
#define int long long
using namespace std;
struct rate{
int to, w;
};
struct node {
int id, value;
};
bool operator<(node x, node y) {
return x.value > y.value;
}
vector<rate>linker[10010];
int dis[10010];
bool vis[10010];
void Dijkstra(int n, int m, int s) {
priority_queue<node>q;
for (int i = 1; i <= m; i++) {
int u, v, w;
cin >> u >> v >> w;
linker[u].push_back({v, w});
}
for (int i = 1; i <= n; i++)
dis[i] = 1e10;
dis[s] = 0ll;
q.push({s, 0ll});
for (int cnt = 1; cnt <= n; cnt++)
node temp = q.top();
q.pop();
if(vis[temp.id]) continue;
int id = temp.id;
int val = temp.value;
vis[id] = 1;
dis[id] = min(val, dis[id]);
for (int i = 0; i < linker[id].size(); i++)
q.push({linker[id][i].to, val + linker[id][i].w});
}
for (int i = 1; i <= n; i++)
if(dis[i] == 1e10) cout << -1 << " ";
else cout << dis[i] << " ";
}
int n, m, s;
signed main() {
cin >> n >> m >> s;
Dijkstra(n, m, s);
return 0;
}
回复
共 5 条回复,欢迎继续交流。
正在加载回复...