社区讨论

这种码风要不要改?

灌水区参与者 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 条回复,欢迎继续交流。

正在加载回复...