spfa判断负环
发布日期:2021-05-14 16:43:52 浏览次数:18 分类:精选文章

本文共 1455 字,大约阅读时间需要 4 分钟。

??????????????????????????????????????????????????????????????????????

????

??????Bellman-Ford??????????????Bellman-Ford??????????????????????????????????

  • ??????????????????????????????0?
  • ?????????????????????????????????????n????????????????????????????????n???????????????
  • ?????????n????????????????????"Yes"?????"No"?
  • ????

    #include 
    #include
    #include
    using namespace std;
    int main() {
    int n, m;
    cin >> n >> m;
    vector
    > edges(n + 1); // ????edges[u]??u???
    for (int i = 1; i <= n; ++i) {
    edges[i].reserve(m);
    }
    for (int i = 0; i < m; ++i) {
    int x, y, z;
    cin >> x >> y >> z;
    edges[x].push_back({y, z});
    }
    int INF = 1e9;
    vector
    d(n + 1, INF); d[1] = 0; // ???1 queue
    q; q.push(1); bool has_update = false; for (int i = 0; i < n; ++i) { has_update = false; while (!q.empty()) { int u = q.front(); q.pop(); for (auto &e : edges[u]) { int v = e.first; int w = e.second; if (d[u] + w < d[v]) { d[v] = d[u] + w; q.push(v); has_update = true; } } } } if (has_update) { cout << "Yes" << endl; } else { cout << "No" << endl; } }

    ????

  • ??????????????n???m?????????????????????
  • ??????????????????????????????0?
  • ??????????????????????????u???u??????????????????????????????????has_update?true?
  • ???????n?????????has_update?true????"Yes"?????"No"?
  • ???????????????????????????

    上一篇:floyd算法
    下一篇:spfa()算法

    发表评论

    最新留言

    哈哈,博客排版真的漂亮呢~
    [***.90.31.176]2025年04月20日 09时57分23秒