社区讨论
这种码风要不要改?
灌水区参与者 4已保存回复 4
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 4 条
- 当前快照
- 1 份
- 快照标识符
- @lz5aj81r
- 此快照首次捕获于
- 2024/07/28 16:20 2 年前
- 此快照最后确认于
- 2024/07/28 17:41 2 年前
各位神犇,这种码风算简洁吗
CPP#include <iostream>
#include <queue>
#include <cstring>
struct {
int to, edgeWeight,next;
}edge[500005];
int head[10005], counter, distance[10005], s, n, m;
void addEdge(int u, int v,int edgeWeight) {
edge[++counter].to = v;
edge[counter].edgeWeight = edgeWeight;
edge[counter].next = head[u];
head[u] = counter;
}
void SPFA() {
memset(distance, 0x7f, sizeof(distance));
distance[s] = 0;
std::queue<int> q;
q.push(s);
while (!q.empty()) {
int u = q.front();
q.pop();
for (int i = head[u];i != 0;i = edge[i].next) {
int v = edge[i].to, w = edge[i].edgeWeight;
if (distance[v] > distance[u] + w) {
distance[v] = distance[u] + w;
q.push(v);
}
}
}
}
int main() {
std::ios::sync_with_stdio(false);
std::cin.tie(0);
std::cout.tie(0);
std::cin >> n >> m >> s;
while (m--) {
int u, v, weight;
std::cin >> u >> v >> weight;
addEdge(u, v, weight);
}
SPFA();
for (int i = 1;i <= n;i++)(distance[i] == 0x7f7f7f7f || distance[i] == 0) && i != s ? std::cout << "2147483647 " : std::cout << distance[i] << ' ';
return 0;
}
就随便贴了以前写的SPFA
回复
共 4 条回复,欢迎继续交流。
正在加载回复...