1 条题解

  • 0
    @ 2025-11-3 0:09:35

    C++ :

    #include <bits/stdc++.h>
    
    int main() {
      std::ios::sync_with_stdio(false);
      std::cin.tie(nullptr);
      int n, m, a, b;
      std::cin >> n >> m >> a >> b;
      std::vector<int> v(n);
      for (auto &i : v) std::cin >> i;
      std::vector<std::vector<int>> chg(n);
      for (int x, y; m; --m) {
        std::cin >> x >> y;
        chg[x].push_back(y);
      }
      std::vector<int> f(n, 1100000000);
      f[a] = 0;
      std::queue<int> Q;
      for (Q.push(a); !Q.empty(); Q.pop()) {
        int u = Q.front();
        for (auto v : chg[u]) {
          if (f[v] > f[u] + 1) {
            f[v] = f[u] + 1;
            Q.push(v);
          }
        }
      }
      if (f[b] == 1100000000) {
        std::cout << "No solution\n";
      } else {
        std::cout << f[b] + v[b] - v[a] << std::endl;
      }
    }
    
    
    • 1

    信息

    ID
    5632
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者