QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#848685#9960. BaggagergnerdplayerWA 1ms3496kbC++231.9kb2025-01-09 03:02:162025-01-09 03:02:16

Judging History

你现在查看的是最新测评结果

  • [2025-01-09 03:02:16]
  • 评测
  • 测评结果:WA
  • 用时:1ms
  • 内存:3496kb
  • [2025-01-09 03:02:16]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;

using i64 = long long;

int main() {
    cin.tie(nullptr)->sync_with_stdio(false);

    auto solve = [&]() {
        int n, m;
        cin >> n >> m;

        constexpr i64 inf = 1e18;
        vector f(3, vector(n, vector<i64>(n, inf)));

        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < n; j++) {
                f[i][j][j] = 0;
            }
        }

        for (int i = 0; i < m; i++) {
            int a, b, c, d;
            cin >> a >> b >> c >> d;
            a--, b--;
            for (int j = 0; j <= d; j++) {
                f[j][a][b] = min<i64>(f[j][a][b], c);
            }
        }

        for (int k = 0; k < n; k++) {
            for (int i = 0; i < n; i++) {
                for (int j = 0; j < n; j++) {
                    f[0][i][j] = min(f[0][i][j], f[0][i][k] + f[0][k][j]);
                }
            }
        }
        for (int k = 0; k < n; k++) {
            for (int i = 0; i < n; i++) {
                for (int j = 0; j < n; j++) {
                    f[1][i][j] = min(f[1][i][j], f[1][i][k] + f[0][k][j]);
                }
            }
        }
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                f[2][i][j] = min(f[2][i][j], 2 * f[1][i][j] + f[0][j][i]);
            }
        }
        for (int k = 0; k < n; k++) {
            for (int i = 0; i < n; i++) {
                for (int j = 0; j < n; j++) {
                    f[2][i][j] = min(f[2][i][j], f[2][i][k] + f[2][k][j]);
                }
            }
        }

        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                i64 ans = f[2][i][j];
                if (ans == inf) {
                    ans = -1;
                }
                cout << ans << " \n"[j + 1 == n];
            }
        }
    };
    
    solve();
    
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 0
Wrong Answer
time: 1ms
memory: 3496kb

input:

5 7
1 2 500 2
2 3 100 1
3 5 20 2
5 4 5 1
4 2 1 0
3 4 40 2
5 4 77 1

output:

0 500 726 751 746
-1 0 226 251 246
-1 152 0 40 20
-1 127 227 0 247
-1 132 232 131 0

result:

wrong answer 12th numbers differ - expected: '-1', found: '152'