QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#842825#9960. Baggageucup-team3474#WA 1ms3908kbC++231.8kb2025-01-04 15:02:372025-01-04 15:02:37

Judging History

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

  • [2025-01-04 15:02:37]
  • 评测
  • 测评结果:WA
  • 用时:1ms
  • 内存:3908kb
  • [2025-01-04 15:02:37]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std ;
const long long inf = 1e18 ;
void solve()
{
    int n , m ;
    cin >> n >> m ;
    vector<array<int , 4>> edge(m) ;
    for(int i = 0 ; i < m ; i ++)  for(int j = 0 ; j < 4 ; j ++)  cin >> edge[i][j] ;
    vector<vector<long long>> ans(n , vector<long long>(n , inf)) ; 
    auto go = [&](int limit)
    {
        vector<vector<long long>> dis(n , vector<long long>(n , inf)) ;
        for(int i = 0 ; i < n ; i ++)  dis[i][i] = 0 ;
        for(auto [a , b , c , d] : edge)
        {
            if(d < limit)  continue ;
            a -= 1 , b -= 1 ;
            dis[a][b] = min(dis[a][b] , 1ll * c) ;
        }
        for(int k = 0 ; k < n ; k ++)
            for(int i = 0 ; i < n ; i ++)
                for(int j = 0 ; j < n ; j ++)
                    dis[i][j] = min(dis[i][j] , dis[i][k] + dis[k][j]) ;
        return dis ;
    } ;
    vector<vector<long long>> two = go(2) ;
    vector<vector<long long>> one = go(1) ;
    vector<vector<long long>> zero = go(0) ;

    auto cal = [&](int i , int j)
    {
        long long mn = two[i][j] ;
        for(int k = 0 ; k < n ; k ++)
        {
            mn = min(mn , two[i][k] + one[k][j] + zero[j][k] + one[k][j]) ;
        }
        return mn ;
    } ;

    for(int i = 0 ; i < n ; i ++)
        for(int j = 0 ; j < n ; j ++)
            if(i != j)
                ans[i][j] = cal(i , j) ;

    for(int i = 0 ; i < n ; i ++)  ans[i][i] = 0 ;
    auto change = [&](long long x)
    {
        if(x > 1e17)  return -1ll ;
        return x ;
    } ;
    for(int i = 0 ; i < n ; i ++)
        for(int j = 0 ; j < n ; j ++)
            cout << change(ans[i][j]) << " \n"[j == n - 1] ;
}
int main()
{
    std::ios::sync_with_stdio(false) , cin.tie(0) ;

    int T = 1 ;
    while (T --)  solve() ;

    return 0 ;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 3560kb

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 -1 0 40 20
-1 -1 -1 0 -1
-1 -1 -1 131 0

result:

ok 25 numbers

Test #2:

score: -100
Wrong Answer
time: 1ms
memory: 3908kb

input:

30 5000
1 15 15034 0
1 15 15034 0
24 28 14745 2
1 15 15034 0
16 25 13210 0
16 22 26942 0
24 20 5423 1
4 12 636 0
16 12 19327 0
1 15 15034 0
1 15 15034 0
3 28 18940 2
1 15 15034 0
15 9 6468 0
20 3 6233 2
19 4 10829 2
1 15 15034 0
26 6 20998 0
1 15 15034 0
1 15 15034 0
1 15 15034 0
4 14 20515 2
1 15 1...

output:

0 868 1159 2954 3001 1108 1557 3972 596 1521 5089 1332 3230 871 2010 2145 1610 783 2677 1490 2120 3440 2627 4515 228 1088 2630 4394 3681 2618
2534 0 291 3106 3753 3127 4053 4838 3130 2387 4580 464 4486 1719 2784 2818 2476 3317 2343 777 2777 3121 1759 5381 2762 1354 5164 6928 3603 3370
2243 3111 0 28...

result:

wrong answer 4th numbers differ - expected: '2449', found: '2954'